当前位置:首页 > 开发 > 编程语言 > Json > 正文

java 处理 大 json 字符串

发表于: 2014-05-15   作者:annan211   来源:转载   浏览次数:
摘要: java 代码处理 json 字符串,存在很多种方法,最直接的就是直接反射成java bean ,但是 如果json字符串过于复杂,反而是得其反,需要写大量代码,我才不干! 所以 下面我找到一种更简单的方法,往下看,小伙伴。 我现在返回的数据是下面这个  { "code": 0, "message": &q
java 代码处理 json 字符串,存在很多种方法,最直接的就是直接反射成java bean ,但是 如果json字符串过于复杂,反而是得其反,需要写大量代码,我才不干! 

所以 下面我找到一种更简单的方法,往下看,小伙伴。

我现在返回的数据是下面这个 
  {
    "code": 0,
    "message": "交易成功",
    "object": {
        "head": {
            "version": "1.0.0",
            "code": "contract_setting_info",
            "timestamp": 1400138523979
        },
        "body": {
            "contractSettings": [
                {
                    "contractDict": {
                        "code": "YGXAG9995",
                        "name": "粤贵银9995",
                        "market_code": "PMEC",
                        "status": 1,
                        "sort": 0
                    },
                    "contractEx": {
                        "unit_number": 15,
                        "unit_type": "KG",
                        "min_quote_unit": 1,
                        "min_var_unit": 1,
                        "step_unit": 1,
                        "currency": "CNY",
                        "quote_type": 1
                    },
                    "contractProtect": {
                        "spread": 20,
                        "time_interval": 60000
                    },
                    "contractAccess": null
                },
                {
                    "contractDict": {
                        "code": "YGXAG9999",
                        "name": "粤贵银9999",
                        "market_code": "PMEC",
                        "status": 1,
                        "sort": 0
                    },
                    "contractEx": {
                        "unit_number": 1,
                        "unit_type": "KG",
                        "min_quote_unit": 1,
                        "min_var_unit": 1,
                        "step_unit": 1,
                        "currency": "CNY",
                        "quote_type": 1
                    },
                    "contractProtect": {
                        "spread": 20,
                        "time_interval": 600
                    },
                    "contractAccess": null
                },
                {
                    "contractDict": {
                        "code": "YGXAG100G",
                        "name": "粤贵银100G",
                        "market_code": "PMEC",
                        "status": 1,
                        "sort": 0
                    },
                    "contractEx": {
                        "unit_number": 100,
                        "unit_type": "g",
                        "min_quote_unit": 0.001,
                        "min_var_unit": 0.001,
                        "step_unit": 0.001,
                        "currency": "CNY",
                        "quote_type": 1
                    },
                    "contractProtect": {
                        "spread": 20,
                        "time_interval": 600
                    },
                    "contractAccess": null
                }
            ]
        }
    },
    "success": true
}


我艹 ,这么长!! 没良心的,叫我怎么处理,而且还是字符串。实际上原本更长,这里只是三个值。其实有100以上的数量。
好了 ,现在开始。

第一步  需要用到这几个包
现使用json-lib组件实现
 * 			需要
 * 				json-lib-2.4-jdk15.jar
 * 				ezmorph-1.0.6.jar
 * 				commons-collections-3.1.jar
 * 				commons-lang-2.0.jar
 * 			支持


第二步
开始转换

JSONObject jsonObject = JSONObject.fromObject(strRet);
JSONObject j1 = JSONObject.fromObject(jsonObject.get("object"));
JSONObject j2 = JSONObject.fromObject(j1.get("body"));

但是有些属性 路径太深 怎么办,没事。
可以这样解决 
第一步  // 将JsonObject对象转换成JavaBean对象
	    Object bean = JSONObject.toBean(jsonObject);
第二部   PropertyUtils.getProperty(bean, "object.body.userCode").toString()  

是不是很爽啊?


通过这样的方式  可以不断获取 json 字符串里面的东东,想要什么要什么。

但是我看到 json字符串里面存在大量的数组 ,我艹,这该怎么办。你妹的。

小伙伴别怕 
 
// 遍历 json accounts 数组 ,获取其为true的账户
			JSONArray ja = JSONArray.fromObject(j2.get("accounts"));

我先拿到目标数组  定位到你
for(int i=0;i<ja.size();i++){
				JSONArray ja2 = ja.getJSONArray(i);
				for(int j = 0;j<ja2.size();j++){
					if("true".equals(ja2.get(j))){
						account = ja2.getString(0);
					}
				}
			}

接着 循环  想要哪个值 要哪个值。 爽吧。
小伙伴要是不明白了  可以加我 984814676 企鹅 



 {
    "response": {
        "data": [
            {
                "address": "南京市游乐园",
                "province": "江苏",
                "district": "玄武区",
                "city": "南京"
            }
        ]
    },
    "status": "ok"
}



package com.gdiex.sts.test;

import java.lang.reflect.InvocationTargetException;

import net.sf.json.JSONArray;
import net.sf.json.JSONException;
import net.sf.json.JSONObject;

import org.apache.commons.beanutils.PropertyUtils;
import org.junit.Test;

public class Test_Json {

	@Test
	public void main() throws IllegalAccessException, InvocationTargetException, NoSuchMethodException {
		String strJson = "{\"response\":{\"data\":[{\"address\":\"南京市游乐园\",\"province\":\"江苏\",\"district\":\"玄武区\",\"city\":\"南京\"}]},\"status\":\"ok\"}";
		try {
			JSONObject jsonobj=JSONObject.fromObject(strJson);//将字符串转化成json对象
			System.out.println(jsonobj);

			Object bean = JSONObject.toBean(jsonobj);
			System.out.println(PropertyUtils.getProperty(bean, "response.data"));
			JSONObject response = JSONObject.fromObject(jsonobj.get("response"));
			JSONArray jsonArray = JSONArray.fromObject(response.get("data"));
			for (int i=0;i<jsonArray.size();i++) {
				 System.out.println(jsonArray.get(i));
			}
		} catch (JSONException e) {
			e.printStackTrace();
		}
	}
}



java 处理 大 json 字符串

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
js处理json格式的插入、修改、删除,以及字符串的比较等常用操作 demo 1: json格式的插入、删除 &l
一、概述 Java是以String类型的对象来实现字符串。String是一个类,当创建一个String对象后,所创建
由于系统中是用Json传输数据的,我觉得在这里有必要把Java和Flex处理Json数据分别介绍一下,今天我
网上查找“java json”,发现大家使用最多的还是json-lib来进行java对象的序列化成json对象和反序列
网上查找“java json”,发现大家使用最多的还是json-lib来进行java对象的序列化成json对象和反序列
    Json字符串对于做web应用的应该很熟悉,其实在很多请求我们返回的都是Json字符串。那对于C#
在进行文本处理时,经常会遇到对大文件进行字符串匹配情况。用命令行的grep\cat命令处理此类问题时
在进行文本处理时,经常会遇到对大文件进行字符串匹配情况。用命令行的grep\cat命令处理此类问题时
一、JSON介绍 JSON(JavaScript Object Notation),类似于XML,是一种数据交换格式,比如JAVA产生
一、pom.xml中加入依赖的jar包(在此感谢osc提供的maven仓库) <!-- json --> <dependency
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号