记录一个List转JSON的问题

中午吃饭的时候,朋友微信上发来一条消息,说它想把List转为json对象,说自己转的格式不对,找不到原因,让我帮忙看一下:

package com.example.demo.fastjson;

import com.alibaba.fastjson.JSON;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class ListToJson {
    public static void main(String[] args) {
        Map map = new HashMap<>();
        map.put("1","aaa");
        map.put("2","bbb");
        map.put("3","ccc");
        map.put("4","ddd");
        Map map1 = new HashMap<>();
        map1.put("1","aaa");
        map1.put("2","bbb");
        map1.put("3","ccc");
        map1.put("4","ddd");
        List> list = new ArrayList<>();
        list.add(map);
        list.add(map1);
        System.out.println(JSON.toJSONString(list.toString()));

    }
}

输出:

"[{1=aaa, 2=bbb, 3=ccc, 4=ddd}, {1=aaa, 2=bbb, 3=ccc, 4=ddd}]"

分析问题:
可以看一下他的数据结构构成:
List中是一个map对象,map存在key和value,分别是String对象,当他调用了JSON.toJSONString(list.toString());
执行了两个步骤:
(1)list转为字符串
(2)String类型的字符串转为JSON字符串,其实json就是字符串额。

问题就发生在第一步,list转字符串的时候,由于里面是个map,会将key和value用等号连接。这个就是他出现上面输出的结果。

如何改进?

list.toString()改为list就可以了

package com.example.demo.fastjson;

import com.alibaba.fastjson.JSON;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class ListToJson {
    public static void main(String[] args) {
        Map map = new HashMap<>();
        map.put("1","aaa");
        map.put("2","bbb");
        map.put("3","ccc");
        map.put("4","ddd");
        Map map1 = new HashMap<>();
        map1.put("1","aaa");
        map1.put("2","bbb");
        map1.put("3","ccc");
        map1.put("4","ddd");
        List> list = new ArrayList<>();
        list.add(map);
        list.add(map1);
        System.out.println(JSON.toJSONString(list));

    }
}

输出:

[{"1":"aaa","2":"bbb","3":"ccc","4":"ddd"},{"1":"aaa","2":"bbb","3":"ccc","4":"ddd"}]

记录一个List转JSON的问题_第1张图片

记录一个List转JSON的问题_第2张图片

你可能感兴趣的:(JAVA)