JSON字符串和对象(Json对象、Java对象)的互相转化(Json字符串和Json对象互相转化、Json字符串和Java对象互相转化,FastJson2详解)
json
适用于现代 C++ 的 JSON。
项目地址:https://gitcode.com/gh_mirrors/js/json
免费下载资源
·
目录
json字符串 转化为 json对象(JsonObject)
json字符串-复杂对象 转化为 json对象(JsonObject)
json字符串-集合 转化为 json对象(JsonObject)
Fastjson2 是阿里巴巴开源的JSON处理工具(和fastjson不是同一个,但是由fastjson演化而来)
准备工作
引入依赖(当前以2.0.37版本为例)
<!--FASTJSON2-->
<dependency>
<groupId>com.alibaba.fastjson2</groupId>
<artifactId>fastjson2</artifactId>
<version>2.0.37</version>
</dependency>
准备变量:
// 简单对象字符串
String jsonStr = "{\"personName\":\"诸葛上天\", \"personAge\": 18}";
// JsonArray对象字符串
String jsonArrStr = "[{\"personName\":\"诸葛上天\", \"personAge\": 18}, {\"personName\":\"王二麻子\", \"personAge\": 120}]";
// 复杂对象字符串
String complexJsonStr = "{\"personName\":\"诸葛上天\", \"personAge\": 18, " +
"\"mother\":{\"personName\":\"端木腐朽\", \"personAge\": 15}, " +
"\"friends\":[{\"personName\":\"欧阳不屑\", \"personAge\": 20}, {\"personName\":\"南宫问天\", \"personAge\": 8}]}";
Json字符串和Json对象之间的相互转化
json字符串 转化为 json对象(JsonObject)
// json字符串 转化为 json对象(JsonObject)
JSONObject jsonObject = JSON.parseObject(jsonStr);
System.out.println(jsonObject.get("personName"));
System.out.println(jsonObject.get("personAge"));
json字符串-List集合 转为 JsonArray
// json字符串-List集合 转为 JsonArray
JSONArray jsonArray = JSON.parseArray(jsonArrStr);
// 遍历JSONArray方法1(for循环)
// (不需要强转,因为getJSONObject(index)已经将JsonArray的Object强转成了JsonObject,如果使用get(index);那么则需要强转)
for(int i = 0; i < jsonArray.size(); i++){
JSONObject jsonObject1 = jsonArray.getJSONObject(i);
System.out.println(jsonObject1.getString("personName"));
System.out.println(jsonObject1.getInteger("personAge"));
}
// 遍历JSONArray方法2(增强for循环)
// (必须强转因为JSONArray实现的是是List<Object>所以需要强转)
for(Object obj : jsonArray){
JSONObject jsonObject2 = (JSONObject) obj;
System.out.println(jsonObject2.getString("personName"));
System.out.println(jsonObject2.getInteger("personAge"));
}
json字符串-复杂对象 转化为 json对象(JsonObject)
// json字符串-复杂对象 转化为 json对象(JsonObject)
JSONObject complexJsonObject = JSON.parseObject(complexJsonStr);
//取出复杂对象中各项内容
String personName = complexJsonObject.getString("personName");
Integer personAge = complexJsonObject.getInteger("personAge");
JSONObject mother = complexJsonObject.getJSONObject("mother");
JSONArray friends = complexJsonObject.getJSONArray("friends");
JSON和JAVA对象之间的相互转化
json字符串 转化为 java对象
// json字符串 转化为 java对象
// 方法1
Person person1 = JSON.parseObject(jsonStr, new TypeReference<Person>() {});
// 方法2(推荐使用)
Person person2 = JSON.parseObject(jsonStr, Person.class);
java对象 转化为 json字符串
// java对象 转化为 json字符串
String jsonStr1 = JSON.toJSONString(new Person());
java对象 转化为 json对象(JsonObject)
// java对象 转化为 json对象(JsonObject)
String jsonStr2 = JSON.toJSONString(new Person());
JSONObject jsonObject2 = JSON.parseObject(jsonStr2);
json对象(JsonObject) 转化为 java对象
// json对象(JsonObject) 转化为 java对象
// 方法一:先将json对象转化为json字符串,再将json字符串转化为java对象
String jsonStr3 = JSON.toJSONString(jsonObject);
Person person3 = JSON.parseObject(jsonStr3, new TypeReference<Person>(){});
// 方法二:直接转化
Person person3_1 = JSON.toJavaObject(jsonObject, Person.class);
json字符串-集合 转化为 json对象(JsonObject)
// json字符串-集合 转化为 json对象(JsonObject)
ArrayList<Person> persons = JSON.parseObject(jsonArrStr, new TypeReference<ArrayList<Person>>() {});
for (Person person : persons) {
System.out.println("姓名:" + person.getPersonName() + ",年龄:" + person.getPersonAge());
}
json字符串-复杂对象 转化为 java对象
// json字符串-复杂对象 转化为 java对象
Person person4 = JSON.parseObject(complexJsonStr, new TypeReference<Person>(){});
//取出复杂对象中各项内容
String personName3 = person4.getPersonName();
Integer personAge3 = person4.getPersonAge();
Person mother3 = person4.getMother();
List<Person> friends3 = person4.getFriends();
GitHub 加速计划 / js / json
18
5
下载
适用于现代 C++ 的 JSON。
最近提交(Master分支:3 个月前 )
2d42229f
* Support BSON uint64 de/serialization
Signed-off-by: Michael Valladolid <mikevalladolid@gmail.com>
* Treat 0x11 as uint64 and not timestamp specific
Signed-off-by: Michael Valladolid <mikevalladolid@gmail.com>
---------
Signed-off-by: Michael Valladolid <mikevalladolid@gmail.com> 6 天前
1809b3d8
Signed-off-by: Niels Lohmann <mail@nlohmann.me> 7 天前
更多推荐
已为社区贡献2条内容
所有评论(0)