- 浏览: 77707 次
- 性别:
- 来自: 上海
文章分类
最新评论
Java解析JSON
JSON 即 JavaScript Object Natation,它是一种轻量级的数据交换格式,非常适合于服务器与 JavaScript 的交互。本文将快速讲解 JSON 格式,并通过代码示例演示如何分别在客户端和服务器端进行 JSON 格式数据的处理。
json-lib和org.json的使用
http://www.cnblogs.com/lanxuezaipiao/archive/2013/05/23/3096001.html
Json必需的包
commons-httpclient-3.1.jar
commons-lang-2.4.jar
commons-logging-1.1.1.jar
json-lib-2.2.3-jdk13.jar
ezmorph-1.0.6.jar
commons-collections-3.2.1.jar
以上包可以从
http://commons.apache.org/index.html
http://json-lib.sourceforge.net/
http://ezmorph.sourceforge.net/
http://morph.sourceforge.net/
http://www.docjar.com/
中下载到。
出现java.lang.NoClassDefFoundError: net/sf/ezmorph/Morpher错误是因为没有导入ezmorph.jar文件或版本不对。
出现java.lang.NoClassDefFoundError: org/apache/commons/collections/map/ListOrderedMap错误是因为没有导入commons-collections.jar文件或版本不对。
Java代码转换成json代码
1. List集合转换成json代码
List list = new ArrayList();
list.add( "first" );
list.add( "second" );
JSONArray jsonArray2 = JSONArray.fromObject( list );
2. Map集合转换成json代码
Map map = new HashMap();
map.put("name", "json");
map.put("bool", Boolean.TRUE);
map.put("int", new Integer(1));
map.put("arr", new String[] { "a", "b" });
map.put("func", "function(i){ return this.arr; }");
JSONObjectjson =JSONObject.fromObject(map);
3. Bean转换成json代码
JSONObjectjsonObject=JSONObject.fromObject(new JsonBean());
4. 数组转换成json代码
boolean[] boolArray = new boolean[] { true, false, true };
JSONArray jsonArray1 = JSONArray.fromObject(boolArray);
5. 一般数据转换成json代码
JSONArray jsonArray3 = JSONArray.fromObject("['json','is','easy']" );
6. beans转换成json代码
List list = new ArrayList();
JsonBean2 jb1 = new JsonBean2();
jb1.setCol(1);
jb1.setRow(1);
jb1.setValue("xx");
JsonBean2 jb2 = new JsonBean2();
jb2.setCol(2);
jb2.setRow(2);
jb2.setValue("");
list.add(jb1);
list.add(jb2);
三、典型例子
java读取本地json文件
Json文件保存在本地硬盘:(如:F:\cctv.json)
格式如下:
{
<wbr><wbr><wbr><wbr>"A":[</wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><span></span>{"name":"xx","sex":"0"}</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>],</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr>"B":[</wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><span></span>{"address":"xx","phone":"xx"},</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>{"address":"xx","phone":"xx"},</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><span></span>{"address":"xx","phone":"xx"}</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><span></span>]<wbr>,</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr>"C":[</wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><span></span>{"cd":"xx","ph":"xx"},</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>{"cd":"xx","ph":"xx"},</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><span></span>{"cd":"xx","ph":"xx"}</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><span></span>]<wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
}
要怎么读取Json文件中的数据?A类里面存的是一个Dto对象、B和C都是List集合
方法一:
//json文件存放路径(如:F:\cctv.json)
String<wbr>data=<wbr>ReadFile.readFile("F:\\cctv.json");<br>
System.out.println(data);<br>
JSONObject<wbr><wbr>jsonObj<wbr><wbr>=<wbr>JSONObject.fromObject(data);<br>
//得到A对象<br>
JSONArray<wbr>arrayA=jsonObj.getJSONArray("A");<br>
A<wbr>a<wbr>=<wbr>(A)<wbr>JSONObject.toBean((JSONArray.fromObject(arrayA.toString()).getJSONObject(0)),A.class);<br>
//得到B集合<br>
JSONArray<wbr>arrayB=jsonObj.getJSONArray("B");<br>
List<B><wbr>listB=new<wbr>ArrayList<B>();<br>
for(int<wbr>i=0;i<arrayB.size();i++){<br>
B<wbr>b=(B)JSONObject.toBean((JSONArray.fromObject(arrayB.toString()).getJSONObject(i)),B.class);<br>
listB.add(b);<br>
}<br>
//得到C集合<br>
JSONArray<wbr>arrayC=jsonObj.getJSONArray("C");<br>
List<C><wbr>listC=new<wbr>ArrayList<C>();<br>
for(int<wbr>i=0;i<arrayB.size();i++){<br>
C<wbr>c=(C)JSONObject.toBean((JSONArray.fromObject(arrayC.toString()).getJSONObject(i)),C.class);<br>
listB.add(c);<br>
}</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
方法二:
1. 通过java IO 得到文件字符串 String jsonString = “。。。”;
2. JSONObject<wbr><span></span>jsonObj<wbr><span></span>= JSONObject.fromObject(jsonString);<br>
3. JSONObject AObj = jsonObj.getJSONObject("A");<br>
4.<wbr><span></span>A a = JSONObject.toBean(AObj, A.class); 得到A对象<br>
5.<wbr><span></span>List listB = Array.asList(json.getJSONArray("B").toArray()); 得到B的List集合<br>
6.<wbr><span></span>List listC = Array.asList(json.getJSONArray("C").toArray()); 得到C的List集合</wbr></wbr></wbr></wbr></wbr>
四、java处理JSON格式数据的工具类
imp<wbr>ort java.util.ArrayList;</wbr>
imp<wbr>ort java.util.Date;</wbr>
imp<wbr>ort java.util.HashMap;</wbr>
imp<wbr>ort java.util.Iterator;</wbr>
imp<wbr>ort java.util.List;</wbr>
imp<wbr>ort java.util.Map;</wbr>
<wbr></wbr>
imp<wbr>ort net.sf.json.JSONArray;</wbr>
imp<wbr>ort net.sf.json.JSONObject;</wbr>
imp<wbr>ort net.sf.json.JsonConfig;</wbr>
imp<wbr>ort net.sf.json.util.CycleDetectionStrategy;</wbr>
<wbr></wbr>
imp<wbr>ort com.linghui.common.util.DateUtil;</wbr>
imp<wbr>ort com.linghui.common.util.jsonutil.DateJsonValueProcessor;</wbr>
<wbr></wbr>
public class JsonUtil {
<wbr></wbr>
<wbr></wbr>
<wbr>public static Object getObject4JsonString(String jsonString,Class pojoCalss){</wbr>
<wbr>Object pojo;</wbr>
<wbr>JSONObject jsonObject = JSONObject.fromObject( jsonString );</wbr>
<wbr>pojo = JSONObject.toBean(jsonObject,pojoCalss);</wbr>
<wbr>return pojo;</wbr>
<wbr>}</wbr>
<wbr></wbr>
<wbr></wbr>
<wbr>public static Map getMap4Json(String jsonString){</wbr>
<wbr>JSONObject jsonObject = JSONObject.fromObject( jsonString );</wbr>
<wbr>Iterator keyIter = jsonObject.keys();</wbr>
<wbr>String key;</wbr>
<wbr>Object value;</wbr>
<wbr>Map valueMap = new HashMap();</wbr>
<wbr>while( keyIter.hasNext())</wbr>
<wbr>{</wbr>
<wbr>key = (String)keyIter.next();</wbr>
<wbr>value = jsonObject.get(key);</wbr>
<wbr>valueMap.put(key, value);</wbr>
<wbr>}</wbr>
<wbr>return valueMap;</wbr>
<wbr>}</wbr>
<wbr></wbr>
<wbr></wbr>
<wbr></wbr>
<wbr>public static Object[] getObjectArray4Json(String jsonString){</wbr>
<wbr>JSONArray jsonArray = JSONArray.fromObject(jsonString);</wbr>
<wbr>return jsonArray.toArray();</wbr>
<wbr>}</wbr>
<wbr></wbr>
<wbr></wbr>
<wbr></wbr>
<wbr>public static List getList4Json(String jsonString, Class pojoClass){</wbr>
<wbr>JSONArray jsonArray = JSONArray.fromObject(jsonString);</wbr>
<wbr>JSONObject jsonObject;</wbr>
<wbr>Object pojoValue;</wbr>
<wbr>List list = new ArrayList();</wbr>
<wbr>for ( int i = 0 ; i<jsonArray.size(); i++){</wbr>
<wbr>jsonObject = jsonArray.getJSONObject(i);</wbr>
<wbr>pojoValue = JSONObject.toBean(jsonObject,pojoClass);</wbr>
<wbr>list.add(pojoValue);</wbr>
<wbr><span></span>}</wbr>
<wbr>return list;</wbr>
<wbr>}</wbr>
<wbr></wbr>
<wbr></wbr>
<wbr>public static String[] getStringArray4Json(String jsonString){</wbr>
<wbr>JSONArray jsonArray = JSONArray.fromObject(jsonString);</wbr>
<wbr>String[] stringArray = new String[jsonArray.size()];</wbr>
<wbr>for( int i = 0 ; i<jsonArray.size() ; i++ ){</wbr>
<wbr>stringArray[i] = jsonArray.getString(i);</wbr>
<wbr>}</wbr>
<wbr>return stringArray;</wbr>
<wbr>}</wbr>
<wbr></wbr>
<wbr></wbr>
<wbr>public static Long[] getLongArray4Json(String jsonString){</wbr>
<wbr>JSONArray jsonArray = JSONArray.fromObject(jsonString);</wbr>
<wbr>Long[] longArray = new Long[jsonArray.size()];</wbr>
<wbr>for( int i = 0 ; i<jsonArray.size() ; i++ ){</wbr>
<wbr>longArray[i] = jsonArray.getLong(i);</wbr>
<wbr><span></span>}</wbr>
<wbr>return longArray;</wbr>
<wbr>}</wbr>
<wbr></wbr>
<wbr></wbr>
<wbr>public static Integer[] getIntegerArray4Json(String jsonString){</wbr>
<wbr>JSONArray jsonArray = JSONArray.fromObject(jsonString);</wbr>
<wbr>Integer[] integerArray = new Integer[jsonArray.size()];</wbr>
<wbr>for( int i = 0 ; i<jsonArray.size() ; i++ ){</wbr>
<wbr>integerArray[i] = jsonArray.getInt(i);</wbr>
<wbr><span></span>}</wbr>
<wbr>return integerArray;</wbr>
<wbr>}</wbr>
<wbr></wbr>
<wbr></wbr>
<wbr>public static Date[] getDateArray4Json(String jsonString,String DataFormat){</wbr>
<wbr>JSONArray jsonArray = JSONArray.fromObject(jsonString);</wbr>
<wbr>Date[] dateArray = new Date[jsonArray.size()];</wbr>
<wbr>String dateString;</wbr>
<wbr>Date date;</wbr>
<wbr></wbr>
<wbr>for( int i = 0 ; i<jsonArray.size() ; i++ ){</wbr>
<wbr>dateString = jsonArray.getString(i);</wbr>
<wbr>date = DateUtil.stringToDate(dateString, DataFormat);</wbr>
<wbr>dateArray[i] = date;</wbr>
<wbr>}</wbr>
<wbr>return dateArray;</wbr>
<wbr>}</wbr>
<wbr></wbr>
<wbr></wbr>
<wbr>public static Double[] getDoubleArray4Json(String jsonString){</wbr>
<wbr>JSONArray jsonArray = JSONArray.fromObject(jsonString);</wbr>
<wbr>Double[] doubleArray = new Double[jsonArray.size()];</wbr>
<wbr>for( int i = 0 ; i<jsonArray.size() ; i++ ){</wbr>
<wbr>doubleArray[i] = jsonArray.getDouble(i);</wbr>
<wbr>}</wbr>
<wbr>return doubleArray;</wbr>
<wbr>}</wbr>
<wbr></wbr>
<wbr></wbr>
<wbr>public static String getJsonString4JavaPOJO(Object javaObj){</wbr>
<wbr>JSONObject json;</wbr>
<wbr>json = JSONObject.fromObject(javaObj);</wbr>
<wbr>return json.toString();</wbr>
<wbr><span></span>}</wbr>
<wbr></wbr>
<wbr></wbr>
<wbr>public static String getJsonString4JavaPOJO(Object javaObj , String dataFormat){</wbr>
<wbr>JSONObject json;</wbr>
<wbr>JsonConfig jsonConfig = configJson(dataFormat);</wbr>
<wbr>json = JSONObject.fromObject(javaObj,jsonConfig);</wbr>
<wbr>return json.toString();</wbr>
<wbr><span></span>}</wbr>
<wbr></wbr>
<wbr></wbr>
<wbr>public static void main(String[] args) {</wbr>
<wbr>// TODO 自动生成方法存根</wbr>
<wbr>}</wbr>
<wbr></wbr>
<wbr></wbr>
<wbr>public static JsonConfig configJson(String datePattern) {</wbr>
<wbr>JsonConfig jsonConfig = new JsonConfig();</wbr>
<wbr>jsonConfig.setExcludes(new String[]{""});</wbr>
<wbr>jsonConfig.setIgnoreDefaultExcludes<wbr>(false);</wbr></wbr>
<wbr>jsonConfig.setCycleDetectionStrateg<wbr>y(CycleDetectionStrategy.LENIENT);</wbr></wbr>
<wbr>jsonConfig.registerJsonValueProcess<wbr>or(Date.class,</wbr></wbr>
<wbr>new DateJsonValueProcessor(datePattern));<wbr></wbr></wbr>
<wbr>return jsonConfig;</wbr>
<wbr>}</wbr>
<wbr></wbr>
<wbr></wbr>
<wbr>public static JsonConfig configJson(String[] excludes,</wbr>
<wbr>String datePattern) {</wbr>
<wbr>JsonConfig jsonConfig = new JsonConfig();</wbr>
<wbr>jsonConfig.setExcludes(excludes);</wbr>
<wbr>jsonConfig.setIgnoreDefaultExcludes<wbr>(false);</wbr></wbr>
<wbr>jsonConfig.setCycleDetectionStrateg<wbr>y(CycleDetectionStrategy.LENIENT);</wbr></wbr>
<wbr>jsonConfig.registerJsonValueProcess<wbr>or(Date.class,</wbr></wbr>
<wbr>new DateJsonValueProcessor(datePattern));<wbr></wbr></wbr>
<wbr>return jsonConfig;</wbr>
<wbr>}</wbr>
}
<wbr></wbr>
package com.linghui.common.util.jsonutil;
<wbr></wbr>
imp<wbr>ort java.text.DateFormat;</wbr>
imp<wbr>ort java.text.SimpleDateFormat;</wbr>
imp<wbr>ort java.util.Date;</wbr>
<wbr></wbr>
imp<wbr>ort net.sf.json.JsonConfig;</wbr>
imp<wbr>ort net.sf.json.processors.JsonValueProcessor;</wbr>
<wbr></wbr>
public class DateJsonValueProcessor implements JsonValueProcessor {
<wbr></wbr>
<wbr>public static final String DEFAULT_DATE_PATTERN = "yyyy-MM-dd";</wbr>
<wbr>private DateFormat dateFormat;</wbr>
<wbr></wbr>
<wbr></wbr>
<wbr>public DateJsonValueProcessor(String datePattern) {<wbr></wbr></wbr>
<wbr>if( null == datePattern )</wbr>
<wbr>dateFormat = new SimpleDateFormat(DEFAULT_DATE_PATTERN);</wbr>
<wbr>else</wbr>
<wbr>dateFormat = new SimpleDateFormat(datePattern);</wbr>
<wbr><span></span>}</wbr>
<wbr></wbr>
<wbr></wbr>
<wbr></wbr>
<wbr>public Object processArrayValue(Object arg0, JsonConfig arg1) {</wbr>
<wbr>// TODO 自动生成方法存根</wbr>
<wbr>return process(arg0);</wbr>
<wbr>}</wbr>
<wbr></wbr>
<wbr></wbr>
<wbr>public Object processObjectValue(String arg0, Object arg1, JsonConfig arg2) {</wbr>
<wbr>// TODO 自动生成方法存根</wbr>
<wbr>return process(arg1);</wbr>
<wbr>}</wbr>
<wbr>private Object process(Object value) {</wbr>
<wbr>return dateFormat.format((Date) value);</wbr>
<wbr>}<wbr></wbr></wbr>
}
相关推荐
Java解析JSON文件是Java开发中常见的一项任务,特别是在与Web服务交互或处理API响应时。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,因其简洁和易于阅读及编写的特点,被广泛应用于网络数据传输...
此压缩包包含两个jar:json-lib-2.4-jdk15.jar和ezmorph-1.0.6.jar 这两个包都是java解析json数据的依赖包,而且是最新版,开源的东东好多人还要分,俺不要分,只希望对你有用。
Java解析JSON是一个常见的任务,特别是在开发Web服务或者与API交互时。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。在Java中,我们可以使用多种库...
Java解析Json字符串是Java开发中常见的一项任务,特别是在与Web服务交互、数据交换或存储时。Json(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。在Java...
JSON官网上推荐的使用java解析json的类库,官网下载后的是未编译打包的java文件,这是我打包后的东东,使用时直接添加进Build path即可,简单实用……
### Java解析JSON的方法 在Java开发中,JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。因此,在处理Web服务、API接口等方面,JSON数据格式非常常见...
标题与描述均提到了“JAVA解析JSON”,这表明文档主要关注的是如何在Java环境中解析JSON数据。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。在Java...
Java解析JSON是一个常见的任务,特别是在开发Web服务或者处理API响应时。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。在Java中,有许多库可以帮助...
标题提到的是“java解析json格式字符串所需jar包”,描述指出我们可以自行下载这些库。在提供的压缩包文件中,包含了以下几个关键的jar包: 1. **commons-collections-3.2.1.jar**:这是Apache Commons Collections...
本压缩包包含了7个用于Java解析JSON文件的必备jar包,通过解压并将这些jar包添加到您的项目类路径中,您可以轻松实现JSON处理。 1. **Jackson库**: - Jackson是Java最流行的JSON处理库之一,由 FasterXML 组织...
附件内容为:Java组装map数据,然后转换为json数据格式;Java解析json数据
总结,Java解析JSON主要依靠第三方库,如Jackson和Gson,它们提供了解析JSON字符串到Java对象,以及将Java对象序列化为JSON字符串的功能。对于复杂的JSON结构,可以通过创建相应的Java类来映射。在实际操作中,务必...
java解析json字符串。 commons-beanutils-1.9.0 commons-collections-3.2.1 commons-lang-2.6 commons-logging-1.1.3 ezmorph-1.0.6 json-lib-2.4-jdk15 demo: package com; import java.util.ArrayList;...
Java解析JSON源码是Java开发中的重要一环,因为JSON(JavaScript Object Notation)作为一种轻量级的数据交换格式,广泛应用于服务器与客户端之间的数据传输。本文将深入探讨如何在Java中解析JSON源码,以及如何利用...
3. **解析JSON字符串**:通过`JSONObject.fromObject()`或`JSONArray.fromObject()`方法将JSON格式的字符串转换为Java对象。 4. **序列化Java对象**:使用`JSONObject.toJSONString()`或`JSONArray.toJSONString()`...
使用该方法可以轻松解析JSON数组,方便取出JSON数据
以上就是Java解析JSON的两种常见方法:使用JSON库(如json-lib、Jackson或Gson)和Java内置API。选择哪种方式取决于项目需求,如性能、兼容性、易用性等。对于大型项目,推荐使用成熟的库,如Jackson,它提供了更...
Java解析JSON包主要涉及到的是如何在Java程序中处理JSON(JavaScript Object Notation)数据,这是一种轻量级的数据交换格式,广泛应用于服务器与客户端之间的数据通信。JSON格式易于人阅读和编写,同时也易于机器...