记录一个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<String,String> map = new HashMap<>();
        map.put("1","aaa");
        map.put("2","bbb");
        map.put("3","ccc");
        map.put("4","ddd");
        Map<String,String> map1 = new HashMap<>();
        map1.put("1","aaa");
        map1.put("2","bbb");
        map1.put("3","ccc");
        map1.put("4","ddd");
        List<Map<String,String>> 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<String,String> map = new HashMap<>();
        map.put("1","aaa");
        map.put("2","bbb");
        map.put("3","ccc");
        map.put("4","ddd");
        Map<String,String> map1 = new HashMap<>();
        map1.put("1","aaa");
        map1.put("2","bbb");
        map1.put("3","ccc");
        map1.put("4","ddd");
        List<Map<String,String>> 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"}]

在这里插入图片描述

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值