这段时间做项目过程中经常碰到前后端使用JSON进行数据传输,会涉及到前后端JSON字符串的解析,一般会用到字符串和JSON之间的转换,这里就记录整合一下几种常用语言的转换方式。
Java实现
Java有几个常用的JSON
解析库,我比较常用的是阿里的fastjson
,这里就以fastjson
作为示例:
maven引入
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>2.0.7</version>
</dependency>
生成一个JSON字符串作为示例
import com.alibaba.fastjson.JSONObject;
import java.util.Arrays;
import java.util.List;
/**
* @author cabbagehsip
* @description 生成json字符串
*/
public class Main {
public static void main(String[] args) {
JSONObject jsonObject = new JSONObject();
// 存入字符串
jsonObject.put("字符串","string");
// 存入整数
jsonObject.put("整数",2);
// 存入布尔值
jsonObject.put("布尔值",true);
// 存入数组列表
List<Integer> intList = Arrays.asList(1,2,3);
jsonObject.put("列表",intList);
System.out.println(jsonObject);
}
}
{"整数":2,"字符串":"string","布尔值":true,"列表":[1,2,3]}
JSON转字符串
String jsonStr = JSONObject.toJSONString(object);
System.out.println(jsonStr);
// {"整数":2,"字符串":"string","布尔值":true,"列表":[1,2,3]}
字符串转JSON
JSONObject jsonObject1 = JSONObject.parseObject("{\"布尔值\":true,\"字符串\":\"string\",\"列表\":[4,5,6],\"整数\":6}");
//string
String s = jsonObject1.getString("字符串");
System.out.println(s);
//int
int i = jsonObject1.getIntValue("整数");
System.out.println(i);
//boolean
boolean b = jsonObject1.getBooleanValue("布尔值");
System.out.println(b);
//list
List<Integer> integers = JSON.parseArray(JSONObject.toJSONString(jsonObject1.getJSONArray("列表")),Integer.class);
integers.forEach(System.out::println);
//null
System.out.println(jsonObject1.getString("空值"));
**注:**字符串解析部分详见文章https://www.cabbageship.com/articleInfo?articleId=131
方法总结
方法 | 功能 |
---|---|
JSON.parseObject() | 从字符串解析 JSON 对象 |
JSON.parseArray() | 从字符串解析 JSON 数组 |
JSON.toJSONString(对象/数组) | 将 JSON 对象或 JSON 数组转化为字符串 |
Python实现
定义JSON对象
import json
jsonObject = {
"整数": 2,
"字符串": "string",
"布尔值": True,
"列表": [1, 2, 3]
}
print(jsonObject)
# {'整数': 2, '字符串': 'string', '布尔值': True, '列表': [1, 2, 3]}
JSON转字符串
jsonStr = json.dumps(jsonObject, ensure_ascii=False) # ensure_ascii=False防止转换后中文乱码
print(jsonStr)
# {"整数": 2, "字符串": "string", "布尔值": true, "列表": [1, 2, 3]}
字符串转JSON
jsonStr2 = '{"整数": 2, "字符串": "string", "布尔值": true, "列表": [1, 2, 3]}'
jsonObject2 = json.loads(jsonStr2)
print(jsonObject2)
# {'整数': 2, '字符串': 'string', '布尔值': True, '列表': [1, 2, 3]}
方法总结
方法名称 | 功能 |
---|---|
json.dumps() | 将JSON对象转换为字符串 |
json.loads() | 将字符串转换为JSON对象 |
JavaScript实现
定义JSON对象
let jsonObject = {
"整数": 2,
"字符串": "string",
"布尔值": true,
"列表": [1, 2, 3]
}
console.log(jsonObject)
// { '整数': 2, '字符串': 'string', '布尔值': true, '列表': [ 1, 2, 3 ] }
JSON转字符串
let jsonStr = JSON.stringify(jsonObject)
console.log(jsonStr)
// {"整数":2,"字符串":"string","布尔值":true,"列表":[1,2,3]}
字符串转JSON
let jsonStr2 = '{"整数": 2, "字符串": "string", "布尔值": true, "列表": [1, 2, 3]}'
let jsonObject2 = JSON.parse(jsonStr)
console.log(jsonObject2)
// { '整数': 2, '字符串': 'string', '布尔值': true, '列表': [ 1, 2, 3 ] }
方法总结
方法名称 | 功能 |
---|---|
JSON.stringify() | 将JSON对象转换为字符串 |
JSON.parse() | 将字符串转换为JSON对象 |