`
aimuyou
  • 浏览: 5459 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

初识JSON in JAVA

    博客分类:
  • JSON
阅读更多
今天在投简历的时候两度发现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()方法都支持此参数。具体使用待以后用得着再看吧。。。
分享到:
评论

相关推荐

    Elasticsearch初识与简单案例.pdf

    ### Elasticsearch 初识与简单案例 #### 一、Elasticsearch简介 Elasticsearch 是一款基于 Lucene 的分布式全文搜索引擎,具有高度可扩展性及灵活性。它不仅支持文本搜索,还能进行复杂的数据分析任务,因此在众多...

    Camel in Action

    **第一部分:初识Camel** - **第1章:遇见Camel(Meeting Camel)** 本章主要介绍了Camel的基本概念、发展历程以及它如何解决企业级应用中的集成问题。通过具体的例子来展示Camel的功能和优势,为后续章节的学习...

    Struts2 in action中文版

    第2章 初识Struts 2 16 2.1 声明性架构 16 2.1.1 两种配置 16 2.1.2 声明架构的两种方式 17 2.1.3 智能默认值 20 2.2 简单的HelloWorld示例 20 2.2.1 部署示例应用程序 20 2.2.2 探索HelloWorld应用程序 24 2.3 使用...

    深入云计算 MongoDB管理与开发实战详解pdf.part1

    1.5 初识MongoDB 1.5.1 MongoDB的特点 1.5.2 数据模型 1.5.3 扩展性 1.5.4 功能性 1.5.5 速度快 1.5.6 简便的管理 1.5.7 使用场合 1.6 本章小结 第2章 MongoDB基本原理与安装 2.1 数据库...

    深入云计算 MongoDB管理与开发实战详解pdf.part2

    1.5 初识MongoDB 1.5.1 MongoDB的特点 1.5.2 数据模型 1.5.3 扩展性 1.5.4 功能性 1.5.5 速度快 1.5.6 简便的管理 1.5.7 使用场合 1.6 本章小结 第2章 MongoDB基本原理与安装 2.1 数据库...

    基于j2ee的ajax宝典

    第1部分 初识Ajax······ 1 第1章 Ajax入门··········· 2 1.1 重新思考Web应用····· 2 1.1.1 应用系统的发展史············· 2 1.1.2 传统Web应用的优势和缺点·········...

Global site tag (gtag.js) - Google Analytics