java - 如何将给定的字符串解析为对象字符串映射的字符串映射?
问题描述
嗨,我的输入字符串看起来像这样
{
6138249={
value=[multi2, multi3, multi4],
key=TestMulticat
},
6161782={
value=Traps (Bamboo / Box),
key=Observation gear
}
}
我想Map<String,Map<String,Object>>
在java中映射这个输入字符串。
由于输入对我来说看起来更神秘,我无法弄清楚如何做同样的事情。我尝试过 ObjectMapper
上课,jackson
但仍然无法映射。我写的代码是这样的
Map<String,Map<String,Object>> data=objectMapper.readValue(singledoc, Map.class);
有人可以建议我执行此操作的方法或解决方案吗,两者都同样有帮助。
解决方案
您的输入看起来不像有效的 json,因为它具有未引用的字符串值。Json 看起来像这样:
{
6138249:{
value:["multi2", "multi3", "multi4"],
key:"TestMulticat"
},
6161782:{
value="Traps (Bamboo / Box)",
key="Observation gear"
}
}
对于这样的输入,您可以使用杰克逊:
objectMapper.configure(JsonParser.Feature.ALLOW_UNQUOTED_FIELD_NAMES, true);
Map<String, Map<String, Object>> result = objectMapper
.readValue(test, new TypeReference<Map<String, Map<String, Object>>>() {});
ALLOW_UNQUOTED_FIELD_NAMES
将帮助您处理未引用的字段名称,但是对于未引用的值没有这样的选项。
在您的情况下,它不是 json,您可以修复序列化以生成有效的 jackson,或者编写自己的序列化来Deserializer
处理 jackson,因为目前无法读取带有未引用字符串值的 json。
推荐阅读
- sql-server - 如何从 SQL Server 中的列中分离分号分隔的值并将它们放在多行中?
- node.js - 已关闭或释放的渲染器窗口中的电子会话 webrequest 函数
- json - 如何将来自 2 个输入的数据发送到一个 json 服务器对象?
- python - 自定义模型的 Keras 多 GPU 模型失败
- amazon-web-services - AWS Cognito 用户池应用程序客户端中的设置意味着什么
- oop - 在我理解 DDD 的过程中遇到了一个令人困惑的情况
- sql-server - 将泰国名字解析为名字的最后一个
- sql - 加入 2 个表之间的多个字段。如何确定是哪个字段导致连接失败?
- powershell - 使用powershell更改构建变量不起作用
- r - 基于两个标准匹配和求和两个数据帧的变量的有效方法