初识JSON in JAVA

今天在投简历的时候两度发现JSON,便做了下了解。
官网地址为:
[url]http://json.org/json-zh.html[/url]
关于名词解释,引用下官网的原话:
[quote]JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。 易于人阅读和编写。同时也易于机器解析和生成。 它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。 这些特性使JSON成为理想的数据交换语言。[/quote]
个人理解就是制定了数据格式标准用于数据交换,比如做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" }
]}

[quote]JSON 是完全动态的,允许在 JSON 结构的中间改变表示数据的方式[/quote]
JSON 可以将类似如上所示的对象中表示的一组数据转换为字符串,然后就可以随意传递。感觉就像是某个类的实例中的各个属性赋值,然后就toString()了一下。

java中JSON的使用可以参考官网给的代码,[url]http://json-lib.sourceforge.net/usage.html[/url],
当然要先引用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。

在高级特性[url]http://json-lib.sourceforge.net/advanced.html[/url]里,主要列举了一些转换时可以进行的设置,都是通过类JsonConfig,而上述的JSONObject.fromObject()和JSONObject.toBean()方法都支持此参数。具体使用待以后用得着再看吧。。。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值