今天在投简历的时候两度发现JSON,便做了下了解。
官网地址为:
http://json.org/json-zh.html
关于名词解释,引用下官网的原话:
引用
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。 易于人阅读和编写。同时也易于机器解析和生成。 它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。 这些特性使JSON成为理想的数据交换语言。
个人理解就是制定了数据格式标准用于数据交换,比如做java web时javascript与java代码中有大量数据交互时。之前有项目中的做法是用特殊分隔符(O(∩_∩)O~),导致代码中大量的字符串拼接拆分操作。
关于JSON的数据格式,官网上有几张大图详细说明,这里先上代码直观理解,是从度娘上借鉴下来的:
{ "programmers": [
{ "firstName": "Brett", "lastName":"McLaughlin", "email": "aaaa"},
{ "firstName": "Jason", "lastName":"Hunter", "email": "bbbb" },
{ "firstName": "Elliotte", "lastName":"Harold", "email": "cccc" }
],
"authors": [
{ "firstName": "Isaac", "lastName": "Asimov", "genre": "science fiction" },
{ "firstName": "Tad", "lastName": "Williams", "genre": "fantasy" },
{ "firstName": "Frank", "lastName": "Peretti", "genre": "christian fiction" }
],
"musicians": [
{ "firstName": "Eric", "lastName": "Clapton", "instrument": "guitar" },
{ "firstName": "Sergei", "lastName": "Rachmaninoff", "instrument": "piano" }
]}
引用
JSON 是完全动态的,允许在 JSON 结构的中间改变表示数据的方式
JSON 可以将类似如上所示的对象中表示的一组数据转换为字符串,然后就可以随意传递。感觉就像是某个类的实例中的各个属性赋值,然后就toString()了一下。
java中JSON的使用可以参考官网给的代码,
http://json-lib.sourceforge.net/usage.html,
当然要先引用lib包:
json-lib-2.4-jdk15.jar
commons-lang 2.5(注意不要用3的版本)
commons-beanutils 1.8.0
commons-collections 3.2.1
commons-logging 1.1.1
ezmorph 1.0.6
主要是用 JSONObject.fromObject(XXX)方法来串行化,用JSONObject.toBean()来反串行化。
但.toBean()方法存在两个问题:
1.如果目标bean有个map作为其属性并且map中含有其他的bean时,那个其他的bean就会自动转成动态bean,这时需要该方法的第三个参数来做说明。
2.类似1,如果目标bean有个Collection(List)作为其属性且含有其他的bean时,那个其他的bean就会自动转成动态bean,这时即便用该方法的第三个参数来做说明也没用!!!
貌似使用上有些限制,但非map和Collection的时候用其他bean作为属性是可以转换过来的。而且即便是动态bean也可以使用PropertyUtils的方法来获取属性值。
XMLSerializer.write(JSONObject)方法可以把JSON格式化为xml字符串,用的时候要注意引入JAR包xom-1.2.8.jar。
在高级特性
http://json-lib.sourceforge.net/advanced.html里,主要列举了一些转换时可以进行的设置,都是通过类JsonConfig,而上述的JSONObject.fromObject()和JSONObject.toBean()方法都支持此参数。具体使用待以后用得着再看吧。。。
分享到:
相关推荐
JSON基于JavaScript的一个子集,但其格式独立于任何特定语言,尽管它与C语言家族(包括C, C++, C#, Java, JavaScript, Perl, Python等)的习惯相似。这种特性使得JSON成为不同编程语言间进行数据交换的理想选择。 ...
【Java初识篇】 在Java的世界里,初学者往往会面临许多挑战,但“初识Java_课后补充作业”正是为了帮助这些新手们提供必要的学习支持。这份资料旨在加深对Java编程语言的理解,提高学习效率,使初学者能更快地掌握...
【JAVA基础-初识JAVA】 Java是一种广泛使用的高级编程语言,由Sun Microsystems(现已被Oracle公司收购)于1995年推出。它的设计目标是“一次编写,到处运行”,这意味着编写好的Java程序可以在任何支持Java环境的...
第01讲 初识Java.ppt
Java 语言以其“一次编译,到处运行”的特性在编程界占据着重要地位。这是因为Java程序首先被编译成与平台无关的字节码(.class文件),这些字节码随后在任何支持Java的平台上由Java虚拟机(JVM)执行。JVM是Java最...
在本实践课程“Java2上机实践1初识java”中,我们将深入探索Java编程的基础概念,通过一系列有趣的实例来加深理解。这个压缩包包含了实验1的相关材料,旨在引导我们逐步掌握Java语言的核心特性。 首先,我们要从"猜...
"初识Java.zip"这个压缩包文件显然旨在帮助初学者入门Java编程。它包含的资源可能包括教学演示案例、上机练习参考答案以及课后作业参考答案,这些都是学习过程中非常重要的组成部分。 第一章"初识Java"通常会涵盖...
课堂笔记,第一次学习java的课堂笔记,第一次学习java的课堂笔记
java程序设计初识,介绍了Java的基础知识
《初识Java微信公众号开发》 http://www.imooc.com/learn/368 附件是整理的源码编译没有错误。 环境说明:tomcat8.5、jdk1.8、dom4j-1.6.1、XStream-1.4.9 程序总是报错“org.xmlpull.v1.XmlPullParserException”,...
Java基础精品课01-初识java录屏1.java概念简介.mp4
初识Java的内容包括:什么是Java、Java的平台版本、Java的构成(JavaSE、JavaEE、JavaME)、Java语言的特性、Java的编译和运行命令、JDK的安装等...
### 初识JAVA的知识:配置Java环境变量于Windows 7 #### 一、Java与环境变量的重要性 Java作为一门跨平台的编程语言,其运行环境的配置至关重要。无论是开发还是运行Java程序,都需要确保系统中正确设置了Java环境...
这个名为"初识java,用springBoot学习java.zip"的压缩包文件,显然是为了帮助初学者入门Java编程并深入理解Spring Boot的应用。 首先,让我们来了解一下Java的基础知识。Java的核心特性包括封装、继承、多态和抽象,...
Java基础精品课01-初识java录屏2.java的编译和运行.mp4
这个“Java基础精品课01-初识java”课程旨在为初学者提供一个全面的入门指南,帮助他们理解Java的核心概念和基本语法。 在Java编程语言中,我们首先会接触到的是它的关键字、数据类型以及变量。Java的关键字是预定...
【初识Java】 Java是一种广泛使用的面向对象的编程语言,由Sun Microsystems(后被Oracle公司收购)于1995年发布。它的设计目标是具备“简单性、面向对象、健壮性、安全性、可移植性、高效性、多线程和动态性”等...
在《国人:JSON-RPC之初识》这篇博文中,作者可能详细介绍了如何在实际项目中使用JSON-RPC,包括设置服务器端的JSON-RPC服务、创建客户端连接、调用远程方法以及处理可能出现的错误。同时,可能会涉及到一些工具的...
查老师讲的与自己的理解!1.什么是程序2.了解主流编程语言3.了解java的历史和前景4. 熟练掌握安装,【配置】Java开发环境5.熟练掌握使用记事本开发Java程序6.了解java虚拟机与[跨平台]的原理