【问题标题】:Invalid JSON List<map<string, string>> in JAVAJAVA 中无效的 JSON 列表<map<string, string>>
【发布时间】:2021-05-25 20:30:24
【问题描述】:

我在 JAVA 中有这个:private Map&lt;String,String&gt; car;

然后地图的其他类将被转换为这样的地图列表

List<Map<String,String>> car;

 and then here is the implementation

 List<Map<String, String>> mylist = new ArrayList<>();
 CarEvidence.getCarFieldsEvidence().forEach((key, value) -> {
            mylist.add(new HashMap<String,String>(){{
                put("field",key);
                put("value",value);
            }});
        });

如何将其转换为 JSON 对象?如果我将此发送到服务会引发错误,无效的 json。

......“其他 JSON 参数”......

 "mylist": [
            {
              "field": "unique",
              "secondValue": "pontiac",
              "value": "10000"
            },
            {
              "field": "other",
              "secondValue": null,
              "value": "any value"
            },
            {
              "field": "log",
              "secondValue": null,
              "value": "contract"
            },
            {
              "field": "message",
              "secondValue": null,
              "value": "last value"
            }
          ]

但是如果我发送这个服务返回 200 ok

"mylist": 
        {
          "field": "firstValue",
          "secondValue": null,
          "value": ""
        }

请帮忙:(

【问题讨论】:

  • 嗯,显然,端点不希望myList 是一个列表,而是一个对象。
  • 在那种情况下使用HashMap 是完全没有意义的;只需使用ArrayList&lt;SomeModel&gt;

标签: java json list


【解决方案1】:

List&lt;Map&lt;String,String&gt;&gt; 对应的 JSON 如下所示

[
            {
              "field": "unique",
              "secondValue": "pontiac",
              "value": "10000"
            },
            {
              "field": "other",
              "secondValue": null,
              "value": "any value"
            },
            {
              "field": "log",
              "secondValue": null,
              "value": "contract"
            },
            {
              "field": "message",
              "secondValue": null,
              "value": "last value"
            }
          ]

发送时发送200的原因

"mylist": 
        {
          "field": "firstValue",
          "secondValue": null,
          "value": ""
        }

是因为,map中的key为“mylist”,value为json的String

【讨论】:

    【解决方案2】:

    JSON 总是以 { 开头并以 } 结尾 ...这意味着,您必须将 myList 设置为某个对象的属性,然后应该对其进行正确编码。添加大括号,你会看到它会解析:https://jsonformatter.org/json-parser

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-16
      • 2011-07-06
      • 2015-11-17
      相关资源
      最近更新 更多