`

java解析json

    博客分类:
  • java
阅读更多

转载http://blog.sina.com.cn/s/blog_67d21ac60100v367.html

Java解析Json对象

 (2011-12-15 21:03:26)
标签: 

杂谈

分类: Json
一、需要的依赖包

1. commons-beanutils-1.7.0
2. commons-collections-3.1
3. commons-lang-2.3
4. commons-logging-1.0.4
5. ezmorph-1.0.3.jar
6. json-lib-2.4-jdk15.jar
相关链接:
http://json-lib.sourceforge.net/
http://ezmorph.sourceforge.net/
http://morph.sourceforge.net/
http://commons.apache.org/
二、重要的类

JSONObject类:这个类能够将符合Json格式的字符串转化成为严格的Json对象,即JSONObject。同样也能够把Map和自己的 bean对象转换成为严格的Json对象,其应用的就是JSONObject.fromObject( obj)方法了。如果需要把Json对象转换回来 的话,就需要new一个JSONObject对象,然后用JSONObject.toBean(jsonObject),然后再把这个Json对象强制转 化成为您需要的类型即可,也可以采用    

JSONObject.toBean(jsonObject,pojoCalss),pojoCalss是一个自定义 的class或者系统class。

JSONArray类:这个类是把迭代器转化成为JSONObject数组,采用如下方法即可完成 JSONArray.fromObject(jsonString),JSONArray.fromObject(jsonList).如果需要反解析的 话,则可以迭代解析或者是直接强制解析,反正JSONArray也是一个迭代起来的。

三、典型例子

java读取本地json文件


Json文件保存在本地硬盘:(如:F:\cctv.json)

格式如下:

    "A":[

          {"name":"xx","sex":"0"}

          ],

    "B":[

          {"address":"xx","phone":"xx"},

          {"address":"xx","phone":"xx"},

          {"address":"xx","phone":"xx"}

         ] ,

    "C":[

          {"cd":"xx","ph":"xx"},

          {"cd":"xx","ph":"xx"},

          {"cd":"xx","ph":"xx"}

         

要怎么读取Json文件中的数据?A类里面存的是一个Dto对象、B和C都是List集合

方法一:

//json文件存放路径(如:F:\cctv.json)
String data= ReadFile.readFile("F:\\cctv.json");
System.out.println(data);
JSONObject  jsonObj  = JSONObject.fromObject(data);
//得到A对象
JSONArray arrayA=jsonObj.getJSONArray("A");
A a = (A) JSONObject.toBean((JSONArray.fromObject(arrayA.toString()).getJSONObject(0)),A.class);
//得到B集合
JSONArray arrayB=jsonObj.getJSONArray("B");
List<B> listB=new ArrayList<B>();
for(int i=0;i<arrayB.size();i++){
B b=(B)JSONObject.toBean((JSONArray.fromObject(arrayB.toString()).getJSONObject(i)),B.class);
listB.add(b);
}
//得到C集合
JSONArray arrayC=jsonObj.getJSONArray("C");
List<C> listC=new ArrayList<C>();
for(int i=0;i<arrayB.size();i++){
C c=(C)JSONObject.toBean((JSONArray.fromObject(arrayC.toString()).getJSONObject(i)),C.class);
listB.add(c);
}

方法二:

1. 通过java IO 得到文件字符串 String jsonString = “。。。”;
2. JSONObject  jsonObj  = JSONObject.fromObject(jsonString);
3. JSONObject AObj = jsonObj.getJSONObject("A");
4.  A a = JSONObject.toBean(AObj, A.class); 得到A对象
5.  List listB = Array.asList(json.getJSONArray("B").toArray()); 得到B的List集合
6.  List listC = Array.asList(json.getJSONArray("C").toArray()); 得到C的List集合


四、java处理JSON格式数据的工具类


import java.util.ArrayList;

import java.util.Date;

import java.util.HashMap;

import java.util.Iterator;

import java.util.List;

import java.util.Map;

 

import net.sf.json.JSONArray;

import net.sf.json.JSONObject;

import net.sf.json.JsonConfig;

import net.sf.json.util.CycleDetectionStrategy;

 

import com.linghui.common.util.DateUtil;

import com.linghui.common.util.jsonutil.DateJsonValueProcessor;

 

public class JsonUtil {

 

 

 public static Object getObject4JsonString(String jsonString,Class pojoCalss){

 Object pojo;

 JSONObject jsonObject = JSONObject.fromObject( jsonString );

 pojo = JSONObject.toBean(jsonObject,pojoCalss);

 return pojo;

 }

 

 

 public static Map getMap4Json(String jsonString){

 JSONObject jsonObject = JSONObject.fromObject( jsonString );

 Iterator keyIter = jsonObject.keys();

 String key;

 Object value;

 Map valueMap = new HashMap();

 while( keyIter.hasNext())

 {

 key = (String)keyIter.next();

 value = jsonObject.get(key);

 valueMap.put(key, value);

 }

 return valueMap;

 }

 

 

 

 public static Object[] getObjectArray4Json(String jsonString){

 JSONArray jsonArray = JSONArray.fromObject(jsonString);

 return jsonArray.toArray();

 }

 

 

 

 public static List getList4Json(String jsonString, Class pojoClass){

 JSONArray jsonArray = JSONArray.fromObject(jsonString);

 JSONObject jsonObject;

 Object pojoValue;

 List list = new ArrayList();

 for ( int i = 0 ; i<jsonArray.size(); i++){

 jsonObject = jsonArray.getJSONObject(i);

 pojoValue = JSONObject.toBean(jsonObject,pojoClass);

 list.add(pojoValue);

  }

 return list;

 }

 

 

 public static String[] getStringArray4Json(String jsonString){

 JSONArray jsonArray = JSONArray.fromObject(jsonString);

 String[] stringArray = new String[jsonArray.size()];

 for( int i = 0 ; i<jsonArray.size() ; i++ ){

 stringArray[i] = jsonArray.getString(i);

 }

 return stringArray;

 }

 

 

 public static Long[] getLongArray4Json(String jsonString){

 JSONArray jsonArray = JSONArray.fromObject(jsonString);

 Long[] longArray = new Long[jsonArray.size()];

 for( int i = 0 ; i<jsonArray.size() ; i++ ){

 longArray[i] = jsonArray.getLong(i);

  }

 return longArray;

 }

 

 

 public static Integer[] getIntegerArray4Json(String jsonString){

 JSONArray jsonArray = JSONArray.fromObject(jsonString);

 Integer[] integerArray = new Integer[jsonArray.size()];

 for( int i = 0 ; i<jsonArray.size() ; i++ ){

 integerArray[i] = jsonArray.getInt(i);

  }

 return integerArray;

 }

 

 

 public static Date[] getDateArray4Json(String jsonString,String DataFormat){

 JSONArray jsonArray = JSONArray.fromObject(jsonString);

 Date[] dateArray = new Date[jsonArray.size()];

 String dateString;

 Date date;

 

 for( int i = 0 ; i<jsonArray.size() ; i++ ){

 dateString = jsonArray.getString(i);

 date = DateUtil.stringToDate(dateString, DataFormat);

 dateArray[i] = date;

 }

 return dateArray;

 }

 

 

 public static Double[] getDoubleArray4Json(String jsonString){

 JSONArray jsonArray = JSONArray.fromObject(jsonString);

 Double[] doubleArray = new Double[jsonArray.size()];

 for( int i = 0 ; i<jsonArray.size() ; i++ ){

 doubleArray[i] = jsonArray.getDouble(i);

 }

 return doubleArray;

 }

 

 

 public static String getJsonString4JavaPOJO(Object javaObj){

 JSONObject json;

 json = JSONObject.fromObject(javaObj);

 return json.toString();

  }

 

 

 public static String getJsonString4JavaPOJO(Object javaObj , String dataFormat){

 JSONObject json;

 JsonConfig jsonConfig = configJson(dataFormat);

 json = JSONObject.fromObject(javaObj,jsonConfig);

 return json.toString();

  }

 

 

 public static void main(String[] args) {

 // TODO 自动生成方法存根

 }

 

 

 public static JsonConfig configJson(String datePattern) {

 JsonConfig jsonConfig = new JsonConfig();

 jsonConfig.setExcludes(new String[]{""});

 jsonConfig.setIgnoreDefaultExcludes(false);

 jsonConfig.setCycleDetectionStrategy(CycleDetectionStrategy.LENIENT);

 jsonConfig.registerJsonValueProcessor(Date.class,

 new DateJsonValueProcessor(datePattern)); 

 return jsonConfig;

 }

 

 

 public static JsonConfig configJson(String[] excludes,

 String datePattern) {

 JsonConfig jsonConfig = new JsonConfig();

 jsonConfig.setExcludes(excludes);

 jsonConfig.setIgnoreDefaultExcludes(false);

 jsonConfig.setCycleDetectionStrategy(CycleDetectionStrategy.LENIENT);

 jsonConfig.registerJsonValueProcessor(Date.class,

 new DateJsonValueProcessor(datePattern)); 

 return jsonConfig;

 }

}

 

package com.linghui.common.util.jsonutil;

 

import java.text.DateFormat;

import java.text.SimpleDateFormat;

import java.util.Date;

 

import net.sf.json.JsonConfig;

import net.sf.json.processors.JsonValueProcessor;

 

public class DateJsonValueProcessor implements JsonValueProcessor {

 

 public static final String DEFAULT_DATE_PATTERN = "yyyy-MM-dd";

 private DateFormat dateFormat;

 

 

 public DateJsonValueProcessor(String datePattern) { 

 if( null == datePattern )

 dateFormat = new SimpleDateFormat(DEFAULT_DATE_PATTERN);

 else

 dateFormat = new SimpleDateFormat(datePattern);

  }

 

 

 

 public Object processArrayValue(Object arg0, JsonConfig arg1) {

 // TODO 自动生成方法存根

 return process(arg0);

 }

 

 

 public Object processObjectValue(String arg0, Object arg1, JsonConfig arg2) {

 // TODO 自动生成方法存根

 return process(arg1);

 }

 private Object process(Object value) {

 return dateFormat.format((Date) value);

 } 

}
分享到:
评论

相关推荐

    java 解析 json文件 java 解析 json文件

    Java解析JSON文件是Java开发中常见的一项任务,特别是在与Web服务交互或处理API响应时。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,因其简洁和易于阅读及编写的特点,被广泛应用于网络数据传输...

    java解析json的jar包

    此压缩包包含两个jar:json-lib-2.4-jdk15.jar和ezmorph-1.0.6.jar 这两个包都是java解析json数据的依赖包,而且是最新版,开源的东东好多人还要分,俺不要分,只希望对你有用。

    java解析json完整案例

    Java解析JSON是一个常见的任务,特别是在开发Web服务或者与API交互时。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。在Java中,我们可以使用多种库...

    java解析Json字符串

    Java解析Json字符串是Java开发中常见的一项任务,特别是在与Web服务交互、数据交换或存储时。Json(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。在Java...

    使用java解析json格式的字符串

    JSON官网上推荐的使用java解析json的类库,官网下载后的是未编译打包的java文件,这是我打包后的东东,使用时直接添加进Build path即可,简单实用……

    java解析json的方法

    ### Java解析JSON的方法 在Java开发中,JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。因此,在处理Web服务、API接口等方面,JSON数据格式非常常见...

    JAVA解析JSON相关.docx

    标题与描述均提到了“JAVA解析JSON”,这表明文档主要关注的是如何在Java环境中解析JSON数据。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。在Java...

    java解析JSON所需的全部jar包

    Java解析JSON是一个常见的任务,特别是在开发Web服务或者处理API响应时。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。在Java中,有许多库可以帮助...

    java解析json格式字符串所需jar包

    标题提到的是“java解析json格式字符串所需jar包”,描述指出我们可以自行下载这些库。在提供的压缩包文件中,包含了以下几个关键的jar包: 1. **commons-collections-3.2.1.jar**:这是Apache Commons Collections...

    java解析json文件所需jar包

    本压缩包包含了7个用于Java解析JSON文件的必备jar包,通过解压并将这些jar包添加到您的项目类路径中,您可以轻松实现JSON处理。 1. **Jackson库**: - Jackson是Java最流行的JSON处理库之一,由 FasterXML 组织...

    Java组装json和java解析json数组

    附件内容为:Java组装map数据,然后转换为json数据格式;Java解析json数据

    JAVA 解析JSON格式数据

    总结,Java解析JSON主要依靠第三方库,如Jackson和Gson,它们提供了解析JSON字符串到Java对象,以及将Java对象序列化为JSON字符串的功能。对于复杂的JSON结构,可以通过创建相应的Java类来映射。在实际操作中,务必...

    Java解析JSON源码

    Java解析JSON源码是Java开发中的重要一环,因为JSON(JavaScript Object Notation)作为一种轻量级的数据交换格式,广泛应用于服务器与客户端之间的数据传输。本文将深入探讨如何在Java中解析JSON源码,以及如何利用...

    json-lib包(Java解析JSON的所有依赖包)

    3. **解析JSON字符串**:通过`JSONObject.fromObject()`或`JSONArray.fromObject()`方法将JSON格式的字符串转换为Java对象。 4. **序列化Java对象**:使用`JSONObject.toJSONString()`或`JSONArray.toJSONString()`...

    java解析JSON数据

    使用该方法可以轻松解析JSON数组,方便取出JSON数据

    java解析Json的两种方式

    以上就是Java解析JSON的两种常见方法:使用JSON库(如json-lib、Jackson或Gson)和Java内置API。选择哪种方式取决于项目需求,如性能、兼容性、易用性等。对于大型项目,推荐使用成熟的库,如Jackson,它提供了更...

    java解析json包

    Java解析JSON包主要涉及到的是如何在Java程序中处理JSON(JavaScript Object Notation)数据,这是一种轻量级的数据交换格式,广泛应用于服务器与客户端之间的数据通信。JSON格式易于人阅读和编写,同时也易于机器...

Global site tag (gtag.js) - Google Analytics