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

Json字符串到Hashmap.Java[重复]

何涵畅
2023-03-14

我试图使用com.fasterxml.jackson.databind.ObjectMapper将json字符串转换为hashmap。

String str = "{\"key\":\"[{\"one\":\"value\"}]\"}";
ObjectMapper mapper = new ObjectMapper();
try {
    HashMap<String, String> map = mapper.readValue(str, HashMap.class);
    System.out.println(map);
} catch (JsonMappingException e) {
    e.printStackTrace();
} catch (JsonProcessingException e) {
    e.printStackTrace();
}

但是得到下面的错误,

com.fasterxml.jackson.core.JsonParseException: Unexpected character ('o' (code 111)): was expecting comma to separate Object entries
 at [Source: (String)"{"key": "[{"one":"value"}]"}"; line: 1, column: 14]
    at com.fasterxml.jackson.core.JsonParser._constructError(JsonParser.java:2391)
    at com.fasterxml.jackson.core.base.ParserMinimalBase._reportError(ParserMinimalBase.java:735)
    at com.fasterxml.jackson.core.base.ParserMinimalBase._reportUnexpectedChar(ParserMinimalBase.java:659)
    at com.fasterxml.jackson.core.json.ReaderBasedJsonParser._skipComma(ReaderBasedJsonParser.java:2382)
    at com.fasterxml.jackson.core.json.ReaderBasedJsonParser.nextFieldName(ReaderBasedJsonParser.java:947)
    at com.fasterxml.jackson.databind.deser.std.MapDeserializer._readAndBindStringKeyMap(MapDeserializer.java:594)
    at com.fasterxml.jackson.databind.deser.std.MapDeserializer.deserialize(MapDeserializer.java:437)
    at com.fasterxml.jackson.databind.deser.std.MapDeserializer.deserialize(MapDeserializer.java:32)
    at com.fasterxml.jackson.databind.deser.DefaultDeserializationContext.readRootValue(DefaultDeserializationContext.java:323)
    at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4674)
    at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3629)
    at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3597)
    at com.sample.quick.check.one.App.main(App.java:15)

在json字符串中,我希望键和值作为字符串并将它们存储到hashMap中。我不想将值解析为jsonArray。

共有1个答案

郭修平
2023-03-14

JSON 字符串无效。如果 key 的值是字符串,则需要转义 \”。这意味着您需要告诉“Java”来转义\字符。

将字符串更改为String str = "{\"key\":\"[{\\\"one\\\":\\\"value\\\"}]\"}";

这意味着:

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.ObjectMapper;

import java.io.IOException;
import java.util.HashMap;

class Scratch {
    public static void main(String[] args) {
        String str = "{\"key\":\"[{\\\"one\\\":\\\"value\\\"}]\"}";
        ObjectMapper mapper = new ObjectMapper();
        try {
            HashMap<String, String> map = mapper.readValue(str, HashMap.class);
            System.out.println(map);
        } catch (JsonMappingException e) {
            e.printStackTrace();
        } catch (JsonProcessingException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
 类似资料:
  • 我试图将一个Json字符串转换成HashMap,但是它不起作用。我的代码: 我得到以下例外: 我做错了什么?还有其他的转换可能性吗?或者有什么遗漏吗?

  • 我有以下JSON字符串: 我只想要和。我试过这样的方法: 但我得到了以下错误: 我只使用过几次JSON。有人能帮我吗? 对我来说最好的例子是这样的,我在另一个例子中做过: 可能吗? 现在我已经做到了: 我试着这样做: 然后: 但现在当我做一个Prtinout时,我会得到和以前一样的错误:

  • 我试图获取任意长度的字符串[],并将其打印成字符串,最好使用字段分隔符。现在我有: 但是由于某种原因,它只是返回“第二个”值。我如何使它正确连接这些值? 另外,我可以使用来简化代码吗?谢谢

  • 我正在以JSON字符串的形式从数据库中获取数据: 如何从给定的JSON字符串中提取公司名称?

  • 我在文件中有一个字符串 当读取该文件时,文本显然是这样的: 是否有干净的方法转换此字符串,以便文件中的值也是代码中字符串的实际值。换句话说,例如,是

  • 问题内容: 是否有快速功能将通过接收到的JSON对象转换为字符串变量转储(用于跟踪/调试)? 问题答案: 是的,可以在此处找到,它包含在Firefox 3.5.4及更高版本中。 JSON字符串反方向,将JavaScript数据结构转换为JSON文本。 JSON不支持循环数据结构,因此请注意不要将循环结构提供给JSON字符串化器。 https://web.archive.org/web/201006