作者:刘庆
希望对JSON 的学习者有帮助
commons-collections-3.1.jar
commons-lang-2.5.jar
commons-logging-1.1.1.jar
json-lib-2.4-jdk15.jar
http://json-lib.sourceforge.net/
commons-beanutils.jar 下载
http://commons.apache.org/beanutils/download_beanutils.cgi
ezmorph.jar 下载
http://sourceforge.net/projects/ezmorph/files/ezmorph/ezmorph-1.0.6/ezmorph-1.0.6.jar/download
1. Json 数据原理
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。这些特性使JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成。
JSON建构于两种结构:
1. “名称/值”对的集合(A collection of name/value pairs)。不同的语言中,它被理解为对象(object),记录(record),结构(struct),字典(dictionary),哈希表(hash table),有键列表(keyed list),或者关联数组 (associative array)。
2. 值的有序列表(An ordered list of values)。在大部分语言中,它被理解为数组(array)。
这些都是常见的数据结构。事实上大部分现代计算机语言都以某种形式支持它们。这使得一种数据格式在同样基于这些结构的编程语言之间交换成为可能。
2.精据对象查式
java 对象 name="liuqing"
json 数据 {"name":"liuqing"}
java 对象
package com.hello; public class CoreInfo { private int id; private double core; private String name; /** * * setter ...getter */ }
JSON 对象数据
{"core":95.5,"id":234,"name":"coreName"}
java 数组对象
[{JSONObject},{JSONObject},{JSONObject}]
package com.hello; import java.util.ArrayList; import java.util.List; public class User { private Integer id; private String name; private String password; private String sex; private List<English> englishes = new ArrayList<English>(); private CoreInfo coreInfo; /** * * setter ...getter */ }
package com.hello;
import java.math.BigDecimal; public class English { private Integer id; private String name; private String sex; private float doe; private BigDecimal beg; private double fs; /** * * setter ...getter */ }
JSON 数组对象
package com.hello; import java.math.BigDecimal; import net.sf.json.JSONObject; public class PanelInfo { /** * @param args */ public static void main(String[] args) { User u = new User(); u.setId(23); u.setName("liuqing"); u.setPassword("122432432"); u.setSex("male"); CoreInfo coreInfo = new CoreInfo(); coreInfo.setId(234); coreInfo.setName("coreName"); coreInfo.setCore(95.5); u.setCoreInfo(coreInfo); English en = new English(); en.setId(12); en.setName("eeeeee"); en.setSex("male"); en.setBeg(new BigDecimal(26382.09)); en.setDoe(243626.90f); en.setFs(3627.98); English en2 = new English(); en2.setId(124); en2.setName("eeeeee"); en2.setSex("male"); en2.setBeg(new BigDecimal(26382.09)); en2.setDoe(243626.90f); en2.setFs(3627.98); English en3 = new English(); en3.setId(122); en3.setName("eeeeee"); en3.setSex("male"); en3.setBeg(new BigDecimal(26382.09)); en3.setDoe(243626.90f); en3.setFs(3627.98); u.getEnglishes().add(en); u.getEnglishes().add(en2); u.getEnglishes().add(en3); // JSONObject.fromObject(object) 将Java 对象 to JSONObject对象 // JSONObject.toString() 生成JSON String 对象 System.out.println(JSONObject.fromObject(u).toString()); } }
JSON数据
{ "coreInfo":{"core":95.5,"id":234,"name":"coreName"} ,"englishes":[ {"beg":26382.09000000000014551915228366851806640625 ,"doe":243626.9,"fs":3627.98,"id":12,"name":"eeeeee","sex":"male"} ,{"beg":26382.09000000000014551915228366851806640625 ,"doe":243626.9,"fs":3627.98,"id":124,"name":"eeeeee","sex":"male"} ,{"beg":26382.09000000000014551915228366851806640625 ,"doe":243626.9,"fs":3627.98,"id":122,"name":"eeeeee","sex":"male"} ] ,"id":23 ,"name":"liuqing" ,"password":"122432432" ,"sex":"male" }