Java从String开始解析JSON

菜鸟教程的 JSON 教程链接:https://www.runoob.com/json/json-tutorial.html

一、JSON 格式简析。

{
    "person_num": 1,
    "person_info": [{
        "body_parts": {
            "nose": {
                "x": 96.34375,
                "y": 101.53125
            },
            "right_knee": {
                "x": 89.6875,
                "y": 314.53125
            },
         "location": {
            "width": 91.40377044677734,
            "height": 354.7197875976562
        }
     }]        
}

  1. 对象在 {  } 大括号中

  2. 数组在 [  ] 中括号中

  3. key:value 值,中间用冒号隔开

二、将 String 类型的数据转换为 JSON 格式数据

  需要导入几个 jar 包,文件在以下链接中:

链接:https://pan.baidu.com/s/1SNMIPJal0-YKpsMqTnzjsg
提取码:ezmb
复制这段内容后打开百度网盘手机App,操作更方便哦

   需要导入的类如下:

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

  String 类型数据转换为 JSON 格式数据 代码如下:

//result 是上方 JSON 数据的String 格式
String result = "{"person_num": 1,"person_info": [{"body_parts": {"nose": {"x": 96.34375,"y": 101.53125},"right_knee": {"x": 89.6875,"y": 314.53125},"location": {"width": 91.40377044677734,"height": 354.7197875976562}}]}"

JSONObject jsonObject = JSONObject.fromObject(result);//将String 类型数据转换为 JSON 格式数据 

 三、将 JSON 中的数据提取出来

  代码示例为上方提供的 JSON 格式数据(取出其中 "nose" 的数据)

   1. 取对象中的数组数据:("person_info" 对应的 JSON 值是数组类型)

JSONArray person_info = jsonObject.getJSONArray("person_info");

   2. 取数组中的对象:(取 person_info 中第一个数据,在上面的例子中 "person_info" 数组中有两个数据:"body_parts" 和 "location" )

JSONObject body_parts = person_info.getJSONObject(0);

  3. 一个对象中有多个对象:

    是可以直接利用第 1 个示例中的方法调用,但是这里比较特殊的地方在于:"body_parts" 刚从数组中得到数据,还要进行转化:

//由于 body_parts中还有JSONObject,因此还要将 body_parts取出来
body_parts = body_parts.getJSONObject("body_parts");
//得到鼻子的信息
JSONObject nose = body_parts.getJSONObject("nose");

       4. 得到 key-value值:(得到 "nose" 中的 x、y 值)

double nose_x = nose.getDouble("x");
double nose_y = nose.getDouble("y");

  后面就可以直接利用 JSON 中的数据了。

猜你喜欢

转载自www.cnblogs.com/lyw-hunnu/p/11626252.html