资讯 小学 初中 高中 语言 会计职称 学历提升 法考 计算机考试 医护考试 建工考试 教育百科
栏目分类:
子分类:
返回
空麓网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
空麓网 > 计算机考试 > 软件开发 > 后端开发 > Java

解析JSON

Java 更新时间: 发布时间: 计算机考试归档 最新发布

解析JSON

解析JSON

  • 什么是JSON?
    • JSON的基本形式
  • 前端解析JSON
  • Java解析JSON
    • fastjson方式
    • android-json方式
    • json-lib方式
  • Map,Bean -> JSON
    • fastjson
    • json-lib

什么是JSON?

       JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成,而且它是基于JavaScript的。

       JSON 文件的文件类型是 .json,JSON 文本的 MIME 类型是 application/json

JSON的基本形式

       {} 双括号表示对象:对象是一个无序的 “名/值” 对的集合(A collection of name/value pairs),一个对象以 “{” 开始,“}” 结束,每个名称后跟一个":",“名/值”对之间使用“,” 分隔。

       [] 中括号表示数组:值的有序列表(An ordered list of values),一个数组以“[”开始,“]”结束,值之间使用“,”分隔。

       "" 双引号内是属性或值,值(value)可以是双引号括起来的字符串(string)、数值(number)、true、false、 null、对象(object)或者数组(array)。这些结构可以嵌套。

实例

-- 对象
{"name":"小明","age":"18"}

-- 数组
[{"name":"小明","age":"18"},{"name":"小红","age":"19"}]

-- 嵌套
{"code":"200","msg":"成功","data":{"msg":"ssssss","name":"xxxxxx"}}

{
	"value":"200",
	"data":{"msg":"ssssss","name":"xxxxxx"},
	"result":[
			{"name":"小明","age":"18"},
			{"name":"小红","age":"19"} ]
}

前端解析JSON

       JSON是JavaScript原生格式,这意味着在JavaScript中处理JSON数据不需要任何特殊的 API 或工具包。


客户端处理JSON响应

       服务器端返回JSON相应的文本表示,如:

{ "name":"小明", "age":"18" }

       客户端使用eval()函数将JSON文本转化为JavaScript对象:


Java解析JSON

fastjson方式

       使用fastjson-x.x.xx.jar,对于方法中根据key获取value时,要注意判断null。

方法返回值含义
JSON.parseObject(Strign str)JSONObject对象将json字符串转换为对象
JSONObject对象.getString(“xxx”)返回value值获取对象中的值
如果没有指定的key,则返回null
JSONObject对象.getJSONArray(“xxx”)返回一个JSONArray数组,包含多个JSON对象获取array,需要循环获取数据
不存在则返回null
import java.util.Map;

// fastjson-1.2.51.jar
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;

public class AnalysisFirst {

	
	public static void format1() {
		String jsonStr = "{"key":"小红","value":"18"}";
		JSONObject jsonObject = JSON.parseObject(jsonStr);
		String key = jsonObject.getString("key");
		String value = jsonObject.getString("value");
		System.out.println(jsonStr); // {"key":"小红","value":"18"}
		System.out.println(key + "    " + value); // 小红    18
	}

	
	public static void format2() {
		String jsonStr = "{"code":"200","msg":"成功","data":{"msg":"ssssss","name":"xxxxxx"},"des":{"id":"1","info":"信息"}}";
		System.out.println(jsonStr);  // {"code":"200","msg":"成功","data":{"msg":"ssssss","name":"xxxxxx"},"des":{"id":"1","info":"信息"}}
		JSONObject jsonObject = JSON.parseObject(jsonStr);
		System.out.println(jsonObject.getString("code")); // 200
		System.out.println(jsonObject.getString("msg"));  // 成功
		JSONObject dataObject = JSON.parseObject(jsonObject.getString("data"));
		System.out.println(dataObject.getString("msg")); // ssssss
		// 在获取时需要先判断是否为null,避免出现异常
		System.out.println(dataObject.getString("msg1") == null); // true
		System.out.println(JSON.parseObject(jsonObject.getString("des")).getString("info"));
	}
	
	
	public static void format3() {
		String jsonStr = "{"value":"200","data":{"msg":"ssssss","name":"xxxxxx"},"result":[{"name":"小明","age":"18"},{"name":"小红","age":"19"}]}";
		System.out.println(jsonStr);
		JSONObject jsonObject = JSON.parseObject(jsonStr);
		for (Object info : jsonObject.getJSONArray("result")) {
			// 一条具体的json数据
			JSONObject object = (JSONObject)info;
			if(object.get("name") != null){
				System.out.println(object.get("name").toString());
				System.out.println(object.getString("name"));
			}
		}
	}
	
	
	public static void format4() {
		String jsonStr = "[{"name":"小明","age":"18"},{"name":"小红","age":"19"}]";
		System.out.println(jsonStr);
		// 方式一:直接作为JSONArray -> map
		JSONArray jsonArray = JSONArray.parseArray(jsonStr);
		if(null != jsonArray && !jsonArray.isEmpty()) {
			for(int i=0; i
				Map map = (Map)jsonArray.get(i);
				System.out.println(map.get("name"));
			}
		}
		// 方式二
		for (Object info : JSONArray.parseArray(jsonStr)) {
			// 一条具体的json数据
			JSONObject object = (JSONObject)info;
			if(object.get("age") != null){
				System.out.println(object.getString("age"));
			}
		}
	}
	
	// 将json解析为JavaBean对象
	public static void toJavaBean() {
		String str = "{"name":"小明","age":"18"}";
		System.out.println(str);
		Student student = new Student();
		try {
			student = JSON.parseObject(str, Student.class);
		} catch (Exception e) {
		    e.printStackTrace();
		}
		System.out.println(student.toString());
	}
}

android-json方式

       最原始的解析方式,了解即可。

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

import com.alibaba.fastjson.JSON;

public class AnalysisSecond {

	
	public static void format1() {
		String jsonStr = "{"key":"小红","value":"18"}";
		JSONObject jsonObject;
		try {
			jsonObject = new JSONObject(jsonStr);
			String key = jsonObject.getString("key");
			String value = jsonObject.getString("value");
			System.out.println(jsonStr); // {"key":"小红","value":"18"}
			System.out.println(key + "    " + value); // 小红 18
		} catch (JSONException e) {
			e.printStackTrace();
		}
	}

	
	public static void format2() {
		String jsonStr = "{"code":"200","msg":"成功","data":{"msg":"ssssss","name":"xxxxxx"},"des":{"id":"1","info":"信息"}}";
		System.out.println(jsonStr); // {"code":"200","msg":"成功","data":{"msg":"ssssss","name":"xxxxxx"},"des":{"id":"1","info":"信息"}}
		JSONObject jsonObject;
		try {
			jsonObject = new JSONObject(jsonStr);
			System.out.println(jsonObject.getString("code")); // 200
			System.out.println(jsonObject.getString("msg")); // 成功
			JSONObject dataObject = new JSONObject(jsonObject.getString("data"));
			System.out.println(dataObject.getString("msg")); // ssssss
			// 在获取时需要先判断是否为null,避免出现异常
			System.out.println(dataObject.getString("msg1") == null); // true
			System.out.println(JSON.parseObject(jsonObject.getString("des")).getString("info"));
		} catch (JSONException e) {
			e.printStackTrace();
		}
	}

	
	public static void format3() {
		String jsonStr = "{"value":"200","data":{"msg":"ssssss","name":"xxxxxx"},"result":[{"name":"小明","age":"18"},{"name":"小红","age":"19"}]}";
		System.out.println(jsonStr);
		JSONObject jsonObject;
		try {
			jsonObject = new JSONObject(jsonStr);
			// 返回json的数组
			JSONArray jsonArray = jsonObject.getJSONArray("result");
			for (int i = 0; i < jsonArray.length(); i++) {
				JSONObject object = jsonArray.getJSONObject(i);
				if (object.get("name") != null) {
					System.out.println(object.get("name").toString());
					System.out.println(object.getString("name"));
				}
			}
		} catch (JSONException e) {
			e.printStackTrace();
		}
	}
}

json-lib方式

       使用json-lib-2.4.jar

import java.util.Map;
// json-lib-2.4.jar
import net.sf.json.JSONObject;

public class JsonTool {
	public static void main(String[] args) {
	
		String jsonStr = "{"key":"小红","value":"18"}";
		JSONObject jsonObject = JSONObject.fromObject(jsonStr);
		String key = jsonObject.getString("key");
		String value = jsonObject.getString("value");
		System.out.println(jsonObject);// {"key":"小红","value":"18"}
		System.out.println(key + "    " + value);// 小红    18

		// 将 Json转换为 Map
		Map jsonToMap = (Map) JSONObject.toBean(jsonObject, Map.class);
		System.out.println("将 Json转换为 Map:"+jsonToMap);// 将Json转换为 Map:{value=18, key=小红}
		
		// 将 Json转换为 JavaBean
		jsonStr = "{"name":"小李","age":"18"}";
		JSONObject jsonObject1 = JSONObject.fromObject(jsonStr);
		Student jsonToBean = (Student) JSONObject.toBean(jsonObject1, Student.class);
		System.out.println(jsonToBean.getName()+jsonToBean.getAge());// 小李18
	}
}

Map,Bean -> JSON

fastjson

       使用fastjson-x.x.xx.jar

import java.util.HashMap;
import java.util.Map;

import com.alibaba.fastjson.JSONObject;

public class ToJson {

	public static void main(String[] args) {
		
		// 将Map解析成JSON
		Map map = new HashMap();
		map.put("1", "add");
		map.put("2", "del");
		map.put("3", 520);
		JSONObject jsonMap = new JSONObject(map);
		System.out.println("map:"+map);// map:{1=add, 2=del, 3=520}
		System.out.println("JSON:"+jsonMap);// JSON:{"1":"add","2":"del","3":520}
	}
}

json-lib

       使用json-lib-2.4.jar

import java.util.HashMap;
import java.util.Map;
// json-lib-2.4.jar
import net.sf.json.JSONObject;

public class ToJson {

	public static void main(String[] args) {
		
		// 将Map解析成JSON
		Map map = new HashMap();
		map.put("1", "add");
		map.put("2", "del");
		map.put("3", 520);
		JSONObject jsonMap = JSONObject.fromObject(map);
		System.out.println("map:"+map);// map:{3=520, 2=del, 1=add}
		System.out.println("JSON:"+jsonMap);// JSON:{"3":520,"2":"del","1":"add"}	
		
		// 将Bean解析成JSON
		Student student = new Student("小红","18");
		JSONObject jsonBean = JSONObject.fromObject(student);
		System.out.println(jsonBean);// {"age":"18","name":"小红"}
				
		// 嵌套解析成JSON
		Map tempMap = new HashMap();
		tempMap.put("班级", "1班");
		tempMap.put("学生", student);
		JSONObject json = JSONObject.fromObject(tempMap);
		System.out.println(tempMap);
		// {学生=test.constant.json.Student@158c4d4c, 班级=1班}
		System.out.println(json);
		// {"学生":{"age":18,"name":"小红"},"班级":"1班"}
	}
}
转载请注明:文章转载自 http://www.konglu.com/
本文地址:http://www.konglu.com/it/1093756.html
免责声明:

我们致力于保护作者版权,注重分享,被刊用文章【解析JSON】因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理,本文部分文字与图片资源来自于网络,转载此文是出于传递更多信息之目的,若有来源标注错误或侵犯了您的合法权益,请立即通知我们,情况属实,我们会第一时间予以删除,并同时向您表示歉意,谢谢!

我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2023 成都空麓科技有限公司

ICP备案号:蜀ICP备2023000828号-2