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 中的数据了。