`
annan211
  • 浏览: 462945 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

java 处理 大 json 字符串

 
阅读更多
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字符串或字符串数组

    在Java开发中,将Java对象转换为JSON字符串或字符串数组是一项常见的任务,特别是在与前端交互、数据存储或者网络传输时。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也...

    java中解析json字符串

    本文将深入探讨如何在Java中解析JSON字符串,以满足后端处理前端传递的数据需求。 首先,理解JSON的基本结构至关重要。JSON格式通常包含键值对,可以是对象(用花括号 `{}` 包裹)或数组(用方括号 `[]` 包裹)。...

    使用Java操作JSON字符串对象

    使用Java操作JSON字符串对象,使用Java操作JSON字符串对象

    json_lib使用实例:java对象与json字符串的互转

    JSON(JavaScript Object...通过其提供的API,我们可以方便地进行JSON字符串与Java对象之间的双向转换,同时还能处理各种复杂的数据结构。在实际开发中,掌握这些知识对于进行Web服务开发、API接口设计等工作至关重要。

    模仿json,根据对象生成json字符串,根据字符串生成对象

    通过使用如`Gson`这样的库,我们可以轻松地在Java对象和JSON字符串之间进行转换,从而实现数据的有效传输和存储。在实际项目中,务必注意处理可能出现的异常情况,如无效的JSON格式,以及确保数据的安全性。

    java解析Json字符串

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

    使用json-lib将java对象转换成json字符串

    标题中的“使用json-lib将java对象转换成json字符串”指的是在Java编程中,利用json-lib这个库来将Java对象转化为JSON格式的字符串。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛用于前后端...

    java使用fastJson处理复杂Json字符串,直接获取key对应的value值

    java使用fastJson处理复杂Json字符串,直接获取key对应的value值

    利用java反射将json字符串转成对象.zip

    在给定的“利用java反射将json字符串转成对象”的主题中,我们将深入探讨如何借助反射机制将JSON字符串转换为Java对象。 首先,我们需要了解JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人...

    json 字符串转java对象,java对象转json字符串

    自己有空时用java反射写的json转化工具,有不完善之处,多包涵

    Java Web程序实现返回JSON字符串的方法总结

    Java Web 程序实现返回 JSON 字符串的方法总结 Java Web 程序实现返回 JSON 字符串的方法总结是 Java Web 开发中非常重要的一部分。随着 JSON 数据交换格式的广泛应用,Java Web 程序员需要学习如何将 Java 对象...

    Java中Json字符串直接转换为对象的方法(包括多层List集合)

    本文将详细介绍如何将JSON字符串直接转换为Java对象,特别是涉及到多层List集合的情况。在本例中,我们将使用`net.sf.json.JSONObject`类来实现这一功能。 首先,确保你的项目中已经引入了必要的库。在使用`...

    json字符串转化为list泛型

    在Java编程中,我们经常需要将JSON格式的数据转换为Java对象,这通常涉及到将JSON字符串转化为List泛型。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和...

    java验证字符串是否符合json格式

    在Java中,我们可以利用现有的库如Jackson、Gson或org.json等来实现JSON字符串的验证。这里以`org.json`库为例,给出一个简单的验证示例: ```java import org.json.JSONObject; import org.json.JSONTokener; ...

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

    2. **commons-lang-2.5.jar**:Apache Commons Lang是Java语言工具包,包含一些高级字符串处理、日期/时间操作等,对于JSON解析可能不直接相关,但可以支持更复杂的字符串操作。 3. **commons-beanutils-1.8.0.jar*...

    复杂的json字符串解析(真实案例)

    Gson是Google提供的一个Java库,它能够将Java对象转换为JSON字符串,反之亦然。在解析复杂的JSON字符串时,Gson提供了强大的功能,包括对嵌套结构的支持和自定义类型适应。 首先,我们要了解JSON的基本结构。JSON...

    java判断字符串是否是json或json数组.txt

    java判断字符串是否是json或json数组; 简单小方法,很实用;简单实用的方法;亲测可用;嗯嗯嗯呃呃呃呃呃呃呃

    java转json串的几种方法

    以下我们将详细探讨Java中将对象转换为JSON字符串的三种方法,这里使用的是阿里巴巴的Fastjson库,它是一个高性能的JSON库,提供了丰富的API来处理JSON与Java对象之间的转换。 1. **将Java对象转成JSON串** 当我们...

    将string类型xml字符串转为json字符串

    本篇文章将详细讲解如何将string类型的XML字符串转换为JSON字符串,并介绍相关的技术知识。 首先,理解XML和JSON的基本结构是至关重要的。XML是一种树形结构的标记语言,通过标签来定义元素和属性,例如: ```xml ...

    忽略字段的首字母大小写,将json字符串转成javabean对象

    忽略字段的首字母大小写,将json字符串转成javabean对象,解决Java对象中属性中首字母大写而取不到值(取到的值为空)的问题 忽略字段的首字母大小写,将json字符串转成List,解决Java对象中属性中首字母大写而取不...

Global site tag (gtag.js) - Google Analytics