一、解决思路
略
二、准备工作
学会如何在Java程序里解析json。
1、创建Java项目JsonDemo
2、在项目根目录创建lib,在里面添加解析json所需的jar包
链接
解析json的jar包链接点击即可获取
提取码:nypp
复制这段内容后打开百度网盘手机App,操作更方便哦
3、在src里创建net.hw.json包,在里面创建ParseJsonString01类
package net.wlq.json;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.function.Consumer;
/**
* 功能:将json字符串解析为json对象
* 日期:2019.11.04
* */
public class ParseJsonString01 {
/*
public static void main(String[] args) {
//定义一个json字符串
String strJson = "{'id':1,'name':{'first name':'smith','last name':'Brian'},'age':18}";
try {
//基于json字符串创建json对象
JSONObject jsonObject = new JSONObject(strJson);
//
System.out.println(jsonObject);
//
String name = jsonObject.getString("name");
JSONObject id1 = new JSONObject(name);
System.out.println(id1);
}catch (JSONException e) {
e.printStackTrace();
}
}
*/
public static void main(String[] args) {
// 定义一个json字符串
String strJson = "{'id': 1, 'name': 'howard', 'age': 20}";
try {
// 基于json字符串创建json对象
JSONObject jsonObject = new JSONObject(strJson);
// 打印输出json对象
System.out.println(jsonObject);
// 逐个访问json对象属性及其值
System.out.println("id: " + jsonObject.get("id"));
System.out.println("name: " + jsonObject.get("name"));
System.out.println("age: " + jsonObject.get("age"));
// 遍历json对象属性
jsonObject.keys().forEachRemaining(new Consumer() {
@Override
public void accept(Object key) {
try {
System.out.println(key + ": " + jsonObject.get(String.valueOf(key)));
} catch (JSONException e) {
e.printStackTrace();
}
}
});
} catch (JSONException e) {
e.printStackTrace();
}
}
}
大家可以思考一下,如何解析有嵌套的json字符串?
我们可以新建一个ParseJsonString02
package net.wlq.json;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.function.Consumer;
/**
* 功能:将json字符串解析为json对象
* 日期:2019.11.04
* */
public class ParseJsonString02 {
// public static void main(String[] args) {
// //定义json数组字符串
// String strJsonArr = "[{'id':1,'name':'wlq','age',18},"+",{'id':2,'name':'wlq','age',8},"+",{'id':3,'name':'w','age',1}]";
// //
// try {
// JSONArray jsonArray = new JSONArray(strJsonArr);
// //遍历json数组
// for (int i =0;i <jsonArray.length();i++) {
// //获取json对象
// JSONObject jsonObject = (JSONObject) jsonArray.get(i);
// //遍历json对象属性及其值
// jsonObject.keys().forEachRemaining(new Consumer() {
// @Override
// public void accept(Object key) {
// try {
// System.out.println(key+":" +jsonArray);
//
// }catch (JSONException e){
// e.printStackTrace();
// }
// }
// });
//
// }
// } catch (JSONException e) {
// e.printStackTrace();
// }
//
//
// }
public static void main(String[] args) {
//定义一个json字符串
String strJson = "{'id': 1, 'name': {'first name': 'Smith', 'last name': 'Brian'}, 'age': 20}";
//基于json字符串创建json对象
try {
JSONObject jsonObject= new JSONObject(strJson);
//打印输出json对象
System.out.println(jsonObject);
//遍历json对象属性及其值
jsonObject.keys().forEachRemaining(new Consumer() {
@Override
public void accept(Object key) {
try {
System.out.println(key+":"+jsonObject.get(String.valueOf(key)));
} catch (JSONException e) {
e.printStackTrace();
}
}
});
//获取name属性值 - json对象
JSONObject name = (JSONObject) jsonObject.get("name");
//按键取值
System.out.println("first name:"+name.get("first name"));
System.out.println("last name:"+name.get("last name"));
}catch (JSONException e) {
e.printStackTrace();
}
}
}
程序运行结果如下:
4、在net.hw.json里创建ParseJsonString03类
package net.wlq.json;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.function.Consumer;
public class ParseJsonString03 {
/**
* 功能:将json数组字符串解析为json对象
* 日期:2019.11.8
* */
public static void main(String[] args) {
//定义json数组字符串
String strJsonArr ="[{'id': 1, 'name': 'howard', 'age': 20}," +"{'id': 2, 'name': 'alice', 'age': 18}," +"{'id': 3, 'name': 'smith', 'age': 19}]";
try {
//基于json数组字符串创建json对象
JSONArray jsonArray = new JSONArray(strJsonArr);
//遍历json数组
for (int i=0;i<jsonArray.length();i++){
//获取json对象
JSONObject jsonObject = (JSONObject) jsonArray.get(i);
//遍历json对象属性及其值
jsonObject.keys().forEachRemaining(new Consumer() {
@Override
public void accept(Object key) {
try {
System.out.println(key + ": " + jsonObject.get(String.valueOf(key)));
} catch (JSONException e) {
e.printStackTrace();
}
}
});
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}
程序运行结果如下: