这段时间做项目过程中经常碰到前后端使用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对象
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐