Java中 Json、String、jsonObject、jsonArray格式之间互相转换

前言

写这篇文章的初衷,是为了自己日常进行json格式转化方便。

当然在方便自己使用的同时,也分享给大家

一、Fastjson

我这里使用的是阿里的 fastjson,引入maven依赖如下

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.83</version>
</dependency>
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;

1. json格式的字符串 转 JSONObject

接收格式JsonObject类型

{
    "name": "张三",
    "age": "18"
}

public static void myJson(String str) {
    JSONObject obj = JSON.parseObject(str);

    // 测试结果
    System.out.println(obj);
}

输出:

{"name":"张三" , "age":"18"}

2. json格式的字符串 转 JSONArray

接收格式JsonObject类型

[

  {
      "name": "张三",
      "age": "18"
  },

  {
      "name": "李四",
      "age": "19"
  }

]

public static void myJson(String str) {        
    JSONArray array = JSON.parseArray(str);

    // 测试结果
    for(Object object : array){
        JSONObject obj = (JSONObject)object;
        System.out.println(obj);
    }
}

输出:
{"name":"张三" , "age":"18"}
{"name":"李四" , "age":"19"}

3. json格式的字符串 转 JSONObject 、JSONArray

接收格式JsonObject类型

[
  "name":{
        "name1": "张三",
        "name2": "李四"
  }
]

public static void myJson(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);
    }
}

输出:

{"name1":"张三"}
{"name2":"李四"}

3. json格式的字符串 转 实体类(javaBean)

接收格式JsonObject类型

  {
      "name": "张三",
      "age": "18"
  }

// JaveBean
public class Persion {
	private String name;
	private int age;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	
}
public static void myJson(String str) {
    Persion persion = JSON.parseObject(str, new TypeReference<Persion>(){});

    // 测试结果
    System.out.println("name:" + persion.getName() + " , " + "age:" + persion.getAge());
}

输出:

name:张三 , age:18

5. map格式 转 JSONObject

接收格式JsonObject类型

  {
      name = 张三,
      age = 18
  }

public static void myJson(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());
}

输出:

{

  "name":"张三",

  "age":"18"

}

6. 实体类 转 json格式的字符串

public static void myJson(Student student) {
    String str = JSONObject.toJSONString(student);
    // 测试结果
    System.out.println(str);
}

输出:

{"name":"张三" , "age":"18"}

7. 实体类 转 实体类

public static void myJson(Student1 student1) {
    String str = JSONObject.toJSONString(student);
	Student2 student2 = JSON.parseObject(str, new TypeReference<Student2>(){});
}

---------------------------------------------------------------------------------------------------------------

一、提取JsonObject(或 Map)中的 key-value 值

接收格式JsonObject类型

{
    "school": { "小学": "4", "初中": "2",  "高中": "1"  },
    "hospital": { "一甲": "3",  "二甲": "1" },
    "supermarket": { "万达": "2", "万象": "1" }
}

1. 获取 JsonObject 的key

public void myJson(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 myJson(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

二、Gson

解决反序列化,如果后台每个属性值为空时,也返回该属性

# 需要转jsonStirng的对象
Gson gson= new GsonBuilder().serializeNulls().create();
String jsonObject = gson.toJson(object);

三、String字符串分隔

解决字符串逗号分隔

String namesStr = "山东省,江苏省,广东省,浙江省";
String[] names = namesStr.split(",");
for (int i = 0, len = names.length; i < len; i++) {
	System.out.println(names[i])
}

  • 10
    点赞
  • 72
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

学弟不想努力了

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值