JSON数据解析

原创 2015年11月20日 20:47:33

JSON数据的数据格式类似于map,详细格式在这里就详细说了。

以下面这个JSON数据为例说明一下解析JSON的一种方法。

{
    "head": {
        "tip": "success",
        "result": 0
    },
    "boxs": [
        {
            "picture": null,
            "boxId": 1,
            "boxUrl": "jjjjjjj",
            "boxType": "00",
            "updateTime": "2015-11-15T17:51:30",
            "status": "-1",
            "description": null,
            "boxName": "学三智能存取柜1",
            "longitude": null,
            "boxCode": "2230",
            "latitude": null,
            "boxAddr": "北京邮电大学"
        },
        {
            "picture": null,
            "boxId": 2,
            "boxUrl": "jjjjjjj",
            "boxType": "00",
            "updateTime": "2015-11-15T15:20:38",
            "status": "-1",
            "description": null,
            "boxName": "学一智能存储柜",
            "longitude": null,
            "boxCode": "2231",
            "latitude": null,
            "boxAddr": "北京邮电大学"
        },
        {
            "picture": null,
            "boxId": 3,
            "boxUrl": "jjjjjjj",
            "boxType": "00",
            "updateTime": "2015-11-15T15:20:43",
            "status": "-1",
            "description": null,
            "boxName": "学二智能存取柜",
            "longitude": null,
            "boxCode": "2232",
            "latitude": null,
            "boxAddr": null
        }
    ]
}
这个Json字符串包含了两个对象,他们的键分别是“head”和一个"boxs",其中head的值是又是一个JSON对象,boxs的值是一个JSON对象的数组(JSONArray)。

package com.lql.util;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

public class JsonUtil {



	public static List<Map<String, Object>> parseStringToObject(String jsonStr) {
		List<Map<String, Object>> datas = new ArrayList<Map<String,Object>>();
		try {
			JSONObject jsonObject = new JSONObject(jsonStr);//将JSON字符串转换为JSON对象
			//首先根据这个JSON对象键"head"所对应的子JSON对象
			JSONObject head = jsonObject.getJSONObject("head");
			Map<String, Object> map = parseHeadMap(head);
			datas.add(map);
			
			//boxs又对应了若干个JSON对象,所以通过键"boxs"得到一个JSON对象数组
			JSONArray boxsJson = jsonObject.getJSONArray("boxs");
			//遍历每个JSON对象,对各个JSON对象进行解析
			for(int i = 0 ; i < boxsJson.length() ; i++){
				JSONObject jsonObj = boxsJson.getJSONObject(i);
				map = parseJsonToBox(jsonObj);
				datas.add(map);
			}

		} catch (JSONException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return datas;
	}
<span style="white-space:pre">	</span>//解析head所对应的JSON对象
	public static Map<String, Object> parseHeadMap(JSONObject jsonObj) {
		Map<String, Object> map = new HashMap<String, Object>();
		try {
			Object resValue = jsonObj.get("result");
			map.put("result", resValue);
			Object tipValue = jsonObj.get("tip");
			map.put("tip", tipValue);
		} catch (JSONException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return map;
	}
	
	//当当前的JSON对象已经是没有嵌套子JSON对象时,就直接通过各个键获取每个字段的值
	public static Map<String, Object> parseJsonToBox(JSONObject jsonObj){
		Map<String, Object> map = new HashMap<String, Object>();
		try {
			Object picValue = jsonObj.get("picture");
			Object boxId = jsonObj.get("boxId"); 
			Object boxUrl = jsonObj.get("boxUrl");
			Object boxType = jsonObj.get("boxType");
			Object updateTime = jsonObj.get("updateTime");
			Object status = jsonObj.get("status");
			Object description = jsonObj.get("description");
			Object boxName = jsonObj.get("boxName");
			Object longitude = jsonObj.get("longitude");
			Object boxCode = jsonObj.get("boxCode");
			Object latitude = jsonObj.get("latitude");
			Object boxAddr = jsonObj.get("boxAddr");
			map.put("picture", picValue);
			map.put("boxId", boxId);
			map.put("boxUrl", boxUrl);
			map.put("boxType", boxType);
			map.put("updateTime", updateTime);
			map.put("status", status);
			map.put("description", description);
			map.put("boxName", boxName);
			map.put("longitude", longitude);
			map.put("boxCode", boxCode);
			map.put("latitude", latitude);
			map.put("boxAddr", boxAddr);
		} catch (JSONException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		return map;
	}

}

这个只是JSON解析的一种方法,还有其他方法比如Gson,fastjson等


解析JSON格式数据常见方法

待解析的JSON格式的文件如下:     [{"id":"5", "version":"1.0", "name":"xiaowang"},     {"id":"10", "version...
  • Xurns
  • Xurns
  • 2016年06月06日 09:10
  • 5237

Json数据手动解析

本文为博主原创文章,未经博主允许不得转载。很早以前就想写博客,一是怕误导大家,二是怕贻笑大方。现在感觉自己可以拿出部分经验与大家分享了今天分享的是Json数据手动解析,在开发过程中,难免会遇到手动解析...
  • andoop
  • andoop
  • 2016年01月24日 10:54
  • 3485

JSON数据解析(一)——原生方法

public class JSONDEMO { public static void main(String[] args) throws JSONException { String str ...
  • qq_29882585
  • qq_29882585
  • 2016年08月20日 11:46
  • 2941

超详细JSON解析步骤

JSON简介 JAVAScript Object Notation是一种轻量级的数据交换格式具有良好的可读和便于快速编写的特性。业内主流技术为其提供了完整的解决方案(有点类似于正则表达式 ,获得...
  • miaozhenzhong
  • miaozhenzhong
  • 2016年09月19日 14:58
  • 20779

python解析json数据

比如json数据为:{"code":0,"desc":"success","content":[{"type":{"id":"2","name":"\u56e2\u8d2d"},"status":{"...
  • xiaodanpeng
  • xiaodanpeng
  • 2016年03月07日 17:28
  • 1888

iOS学习笔记(十一)——JSON数据解析

在之前的《iOS学习——xml数据解析(九)》介绍了xml数据解析,这一篇简单介绍一下Json数据解析。JSON 即 JavaScript Object Natation,它是一种轻量级的数据交换格式...
  • xyz_lmn
  • xyz_lmn
  • 2013年07月01日 18:58
  • 27575

C++解析json数据

使用C++处理JSON数据交换格式 一、摘要     JSON的全称为:JavaScript Object Notation,顾名思义,JSON是用于标记Javascript对象的,JSON官方的...
  • u011090298
  • u011090298
  • 2015年04月26日 16:32
  • 980

jQuery AJAX获取JSON数据解析多种方式示例

本文出自:http://blog.csdn.net/haiqiao_2010/article/details/12653555
  • zhoucheng05_13
  • zhoucheng05_13
  • 2016年12月13日 15:12
  • 15969

Android开发之JSON数据解析详解(一)

 今天很高兴和大家一起学习Android的JSON数据解析,可能对于学习安卓的朋友都知道JSON在数据解析方面已经很普遍了.所以也是我们必定要了解的知识 ,下面让我们了解一下JSON的发展历程....
  • u013059555
  • u013059555
  • 2013年12月07日 11:36
  • 6460

Java构造和解析Json数据的两种方法详解一

在www.json.org上公布了很多JAVA下的json构造和解析工具,其中org.json和json-lib比较简单,两者使用上差不多但还是有些区别。下面首先介绍用json-lib构造和解析Jso...
  • xujie3
  • xujie3
  • 2016年07月27日 09:45
  • 19209
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:JSON数据解析
举报原因:
原因补充:

(最多只允许输入30个字)