每次遇到json转换的问题吗,都是一顿百度,倒不如自己写一篇,后期遇到自己查看方便
目录
3. json格式的字符串 转 JSONObject 、JSONArray
三、提取JsonObject(或 Map)中的 key-value 值
2.获取JsonObject 中 School的 key-value 值
一、依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.83</version>
</dependency>
二、JSON各种转换
1.json格式的字符串 转 JSONObject
{
"name": "张三",
"age": "18"
}
public static void testJson(String str) {
JSONObject obj = JSON.parseObject(str);
// 测试结果
System.out.println(obj);
}
2.json格式的字符串 转 JSONArray
[
{
"name": "张三",
"age": "18"
},
{
"name": "李四",
"age": "19"
}
]
public static void testJson(String str) {
JSONArray array = JSON.parseArray(str);
// 测试结果
for(Object object : array){
JSONObject obj = (JSONObject)object;
System.out.println(obj);
}
3. json格式的字符串 转 JSONObject 、JSONArray
[
"name":{
"name1": "张三",
"name2": "李四"
}
]
public static void testJson(String str) {
JSONObject jsonObj = JSON.parseObject(str);
JSONArray array = JSON.parseArray(jsonObj.getString("name"));
// 测试结果
for(Object object:array){
JSONObject obj = (JSONObject)object;
System.out.println(obj);
}
}
4. json格式的字符串 转 实体类(javaBean)
{
"name": "张三",
"age": "18"
}
// JaveBean
public class Persion {
private String name;
private int age;
//get、set方法自取
}
public static void testJson(String str) {
Persion persion = JSON.parseObject(str, new TypeReference<Persion>(){});
// 测试结果
System.out.println("name:" + persion.getName() + " , " + "age:" + persion.getAge());
}
5.map格式 转 JSONObject
{
name = 张三,
age = 18
}
public static void testJson(String str) {
Map<String, Object> map = new HashMap<String, Object>();
map.put("name","张三");
map.put("age","18");
JSONObject jsonObj=new JSONObject(map);
// 测试结果
System.out.println(jsonObj.toString());
}
6.实体类转json
//形参的Student 实体类自取
public static void testJson(Student student) {
String str = JSONObject.toJSONString(student);
// 测试结果
System.out.println(str);
}
7.实体类转成实体类
//Student1 实体类自取
public static void testJson(Student1 student1) {
String str = JSONObject.toJSONString(student);
Student2 student2 = JSON.parseObject(str, new TypeReference<Student2>(){});
}
也可以直接使用这个
BeanUtils.copyProperties(oldBean,newBean);
三、提取JsonObject(或 Map)中的 key-value 值
//需要转换的数据
{
"school": { "小学": "4", "初中": "2", "高中": "1" },
"hospital": { "一甲": "3", "二甲": "1" },
"supermarket": { "万达": "2", "万象": "1" }
}
1.获取 JsonObject 的key
public void testJson(JSONObject params){
Map<String, Object> map = params;
Set<String> keys = map.keySet();
for (String key : keys) {
System.out.println(key+"-----"+map.get(key));
}
}
//输出:
supermarket-----{万达=2, 万象=1}
school-----{小学=4, 初中=2, 高中=1}
hospital-----{一甲=3, 二甲=1}
2.获取JsonObject 中 School的 key-value 值
public void testJson(JSONObject params){
Map<String, Object> map = params;
// {"小学":"4","初中":"2","高中":"1"}
Map<String, String> m1 = (Map<String, String>) map.get("school");
Set<String> keys = m1.keySet();
for (String key : keys) {
System.out.println(key+" ----- "+m1.get(key));
}
}
//输出
小学 ----- 4
初中 ----- 2
高中 ----- 1