2、示例json字符串:
{"房产":[{"area":"220平米","address":"西虹市朱雀路888弄","price":"20000000元"},{"area":"356平米","address":"西虹市龙门路666弄","price":"40000000元"}],"基本信息":{"weight":"150斤","age":"36","username":"王多鱼","height":"175cm","hobby":"花钱"},"女朋友":[{"skill":"钢琴,舞蹈","name":"爱丽丝","weight":"95斤","age":"18","height":"165cm"},{"skill":"小提琴,唱歌,舞蹈","name":"安妮","weight":"100斤","age":"20","height":"170cm"}]}
3、示例代码
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.serializer.SerializerFeature;
* @Description: 格式化输出
* @Auther: ztt
* @Date: 2020/4/21 13:16
public class Test {
public static void main(String[] args) {
String jsonStr = "{\"房产\":[{\"area\":\"220平米\",\"address\":\"西虹市朱雀路888弄\",\"price\":\"20000000元\"},{\"area\":\"356平米\",\"address\":\"西虹市龙门路666弄\",\"price\":\"40000000元\"}],\"基本信息\":{\"weight\":\"150斤\",\"age\":\"36\",\"username\":\"王多鱼\",\"height\":\"175cm\",\"hobby\":\"花钱\"},\"女朋友\":[{\"skill\":\"钢琴,舞蹈\",\"name\":\"爱丽丝\",\"weight\":\"95斤\",\"age\":\"18\",\"height\":\"165cm\"},{\"skill\":\"小提琴,唱歌,舞蹈\",\"name\":\"安妮\",\"weight\":\"100斤\",\"age\":\"20\",\"height\":\"170cm\"}]}\n";
JSONObject jsonObject = JSONObject.parseObject(jsonStr);
String formatStr = JSON.toJSONString(jsonObject, SerializerFeature.PrettyFormat, SerializerFeature.WriteMapNullValue,
SerializerFeature.WriteDateUseDateFormat);
System.out.println(formatStr);
打印结果如下:
"房产":[
"area":"220平米",
"address":"西虹市朱雀路888弄",
"price":"20000000元"
"area":"356平米",
"address":"西虹市龙门路666弄",
"price":"40000000元"
"基本信息":{
"weight":"150斤",
"age":"36",
"username":"王多鱼",
"height":"175cm",
"hobby":"花钱"
"女朋友":[
"skill":"钢琴,舞蹈",
"name":"爱丽丝",
"weight":"95斤",
"age":"18",
"height":"165cm"
"skill":"小提琴,唱歌,舞蹈",
"name":"安妮",
"weight":"100斤",
"age":"20",
"height":"170cm"
4、格式化方式说明
fastjson是怎么格式化字符串的呢?我们可以debug跟踪一下代码。如下图所示,可以看到,fastjson往原始的字符串里面添加了很多的\n和\t格式字符,这样打印的时候,就会按照json格式打印出来。
方式二、使用Gson
1、项目的pom.xml依赖
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.2.4</version>
</dependency>
2、示例json字符串:
{"房产":[{"area":"220平米","address":"西虹市朱雀路888弄","price":"20000000元"},{"area":"356平米","address":"西虹市龙门路666弄","price":"40000000元"}],"基本信息":{"weight":"150斤","age":"36","username":"王多鱼","height":"175cm","hobby":"花钱"},"女朋友":[{"skill":"钢琴,舞蹈","name":"爱丽丝","weight":"95斤","age":"18","height":"165cm"},{"skill":"小提琴,唱歌,舞蹈","name":"安妮","weight":"100斤","age":"20","height":"170cm"}]}
3、示例代码
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
* @Description: 格式化输出
* @Auther: ztt
* @Date: 2020/4/21 13:30
public class Test2 {
public static void main(String[] args) {
String jsonStr = "{\"房产\":[{\"area\":\"220平米\",\"address\":\"西虹市朱雀路888弄\",\"price\":\"20000000元\"},{\"area\":\"356平米\",\"address\":\"西虹市龙门路666弄\",\"price\":\"40000000元\"}],\"基本信息\":{\"weight\":\"150斤\",\"age\":\"36\",\"username\":\"王多鱼\",\"height\":\"175cm\",\"hobby\":\"花钱\"},\"女朋友\":[{\"skill\":\"钢琴,舞蹈\",\"name\":\"爱丽丝\",\"weight\":\"95斤\",\"age\":\"18\",\"height\":\"165cm\"},{\"skill\":\"小提琴,唱歌,舞蹈\",\"name\":\"安妮\",\"weight\":\"100斤\",\"age\":\"20\",\"height\":\"170cm\"}]}\n";
JsonParser jsonParser = new JsonParser();
JsonObject jsonObject = jsonParser.parse(jsonStr).getAsJsonObject();
Gson gson = new GsonBuilder().setPrettyPrinting().create();
String formatStr = gson.toJson(jsonObject);
System.out.println(formatStr);
打印结果如下:
"房产": [
"area": "220平米",
"address": "西虹市朱雀路888弄",
"price": "20000000元"
"area": "356平米",
"address": "西虹市龙门路666弄",
"price": "40000000元"
"基本信息": {
"weight": "150斤",
"age": "36",
"username": "王多鱼",
"height": "175cm",
"hobby": "花钱"
"女朋友": [
"skill": "钢琴,舞蹈",
"name": "爱丽丝",
"weight": "95斤",
"age": "18",
"height": "165cm"
"skill": "小提琴,唱歌,舞蹈",
"name": "安妮",
"weight": "100斤",
"age": "20",
"height": "170cm"
4、格式化方式说明
gson是怎么格式化字符串的呢?我们可以debug跟踪一下代码。如下图所示,可以看到,gson往原始的字符串里面添加了很多的\n和空格,也就是说换行用\n来操作,缩进用空格来搞,不同于fastson缩进用\t来搞。
以上测试,我们仅仅是在控制台里打印这些字符串,在实际的使用场景中,我们更多的是需要把格式化好的字符串写到文件或者生成各种文件。这个时候就要考虑一下字段忽略空格、缩进等问题。比方说生成pdf的ITEXT库,就会忽略掉\t,导致生成的pdf文件显示结果跟我们预想的不一样,如果出现这种问题,可以考虑用字符替换等方式解决。
参考文章:https://www.cnblogs.com/shoufeng/p/11196500.html
方式一、使用阿里的FastJson1、项目的pom.xml依赖<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.58</version></depende...
去博客设置页面,选择一款你喜欢的代码片高亮样式,下面展示同样高亮的
1.json字符串转换为对象
String jsonString="{'idcard':'42313123','id':'2345'}";
Channelbankcard c =JSONObject.parseObject(jsonString, Channelbankcard.class);
Sy...
JSONObject.toJSON(map).toString()
转换后的value变成了时间戳,显示出来很不友好。后来翻阅fastjson的API发现有个方法可以将对象中的时间格式不转化为时间戳的方法
JSON.toJSONStringWithDateFormat(O...
使用fastJSON转换对象,对象中的日期自动转为时间戳问题
fastJSON使用toJSONString转换成json时会自动将对象中的日期属性转为时间戳格式
可以使用下面方式进行转换
JSON.toJSONStringWithDateFormat(Object,dateformat,SerializerFeature.WriteDateUseDateFormat)
JSON.toJSONStringWithDateFormat(sceneDetailList, "yyyy-MM-dd", Ser
User user = new User("kk","123");
String s = toJSONString(user);
System.out.println(s);
得到的输出为:
可以看到,通过toJSONString这个方法可以得到一个将java对象转为json表示方式的字符串,下面我们来根据源码分析一下这个代码。
该方法是定义在JSON这个类中
在Java中,你可以使用各种库来将字符串转换为JSON格式。其中,最常用的是使用JSON库,例如 Jackson、Gson、Fastjson等。下面以Jackson库为例,演示如何将字符串转化为JSON:
首先,确保你已经添加了Jackson库的依赖。在Maven项目中,可以在pom.xml文件中添加以下依赖:
```xml
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.12.5</version>
</dependency>
然后,通过以下代码将字符串转化为JSON:
```java
import com.fasterxml.jackson.databind.ObjectMapper;
public class StringToJsonExample {
public static void main(String[] args) throws Exception {
ObjectMapper mapper = new ObjectMapper();
String jsonString = "{\"name\":\"John\", \"age\":30, \"city\":\"New York\"}";
// 将字符串转化为JSON对象
Object json = mapper.readValue(jsonString, Object.class);
// 将JSON对象转化为格式化的JSON字符串
String prettyJson = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(json);
System.out.println(prettyJson);
以上代码中,首先创建了一个`ObjectMapper`对象,它是Jackson库的核心类,用于处理JSON的读写操作。然后使用`readValue()`方法将字符串转化为JSON对象。最后,使用`writerWithDefaultPrettyPrinter()`方法将JSON对象转化为格式化的JSON字符串,方便查看输出结果。
运行以上代码,输出结果将会是格式化后的JSON字符串:
"name" : "John",
"age" : 30,
"city" : "New York"
这样就完成了将字符串转化为JSON的操作。你可以根据实际需求选择其他的JSON库和方法来实现相同的功能。