当前位置: 首页 > 知识库问答 >
问题:

将包含数组的json字符串转换为Java中的映射

章稳
2023-03-14

我需要在Java中将以下json字符串转换为Map:请注意,这个json字符串中包含数组,这就是我面临的问题:

{
   "type":"auth",
   "amount":"16846",
   "level3":{
      "amount":"0.00",
      "zip":"37209",
      "items":[
         {
            "description":"temp1",
            "commodity_code":"1",
            "product_code":"11"
         },
         {
            "description":"temp2",
            "commodity_code":"2",
            "product_code":"22"
         }
      ]
   }
}

JSON解析器错误:不能将java.lang.String实例反序列化出START_OBJECT令牌...};行:3,列:20](通过引用链:java.util.LinkedHashMap[“level3”])com.fasterxml.jackson.databind.JSONMappingException:不能将java.lang.String实例反序列化出START_OBJECT令牌

因此,为了更详细地说明我对该映射所做的工作,将使用以下方法将该映射转换回json字符串:

    public static String getJSON(Object map) throws IOException {
    ObjectMapper objectMapper = new ObjectMapper();
    objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);

    ByteArrayOutputStream byteStream = new ByteArrayOutputStream();
    OutputStream stream = new BufferedOutputStream(byteStream);
    JsonGenerator jsonGenerator = objectMapper.getFactory().createGenerator(stream, JsonEncoding.UTF8);
    objectMapper.writeValue(jsonGenerator, map);
    stream.flush();
    jsonGenerator.close();
    return new String(byteStream.toByteArray());
}

共有1个答案

公孙高畅
2023-03-14

不能将JSON内容解析为映射 (就像在发布的两个链接中所做的那样)。但是可以将其解析为映射

例如,如下所示:

ObjectMapper mapper = new ObjectMapper();
File file = new File("example.json");
Map<String, Object> map;
map = mapper.readValue(file, new TypeReference<Map<String, Object>>(){});
 类似资料:
  • 问题内容: 我有一个字节数组,其中包含我希望转换为字符串的ASCII字符。例如: myByteArray在循环后应包含字符串“ 12345678”。如何将此字符串转换为String变量? 谢谢! 问题答案: 用 字符串类为此提供了一个构造函数。 旁注:此处的第二个参数是CharSet(字节编码),应谨慎处理。这里更多。

  • 问题内容: 我有一个Json String,我想将其转换为Java中的数组。 就我所知,我什至不确定是否必须先创建一个对象。 我需要做的eventuallay是将其附加到android应用程序中的ArrayAdapter上。 谢谢 问题答案: 像这样:

  • 问题内容: 我从网络服务获取以下JSON字符串,并尝试将其转换为 我String在线上对此进行了验证,这似乎是正确的。现在我在android开发中使用以下代码来利用 这会引发异常和类型不匹配的异常。 问题答案: 在这里,你将获得JSONObject,因此请更改以下行: 具有以下内容: 之后

  • 我有一个Json字符串,我正试图将其转换为Java中的数组。 就我所知,我甚至不确定是否必须先创建一个对象。 谢谢

  • 问题内容: 我具有来自Web服务的以下JSON字符串,并且正在尝试将其转换为 我在线上对此进行了验证,这似乎是正确的。现在我在android开发中使用以下代码来利用 这会引发异常和类型不匹配的异常。 问题答案: 在这里,您将获得JSONObject,因此请更改以下行: 具有以下内容: 之后