我正试图用jackson-core-2.9.6把我的json转换成地图。我的json是
{
"name": "Loren",
"inputDetails": {
"truncated": false,
"result": [
{
"subjects": [
{
"math": "50",
"SST": "37 ",
"status": "ACTIVE"
}
]
}
]
},
"timeoutInSeconds": null
}
我试图将JSON解析成Map的Java代码是这样的
public static void main(String[]args){
String request="{\r\n \"name\": \"Loren\",\r\n \"inputDetails\": {\r\n \"truncated\": false,\r\n \"result\": [\r\n {\r\n \"subjects\": [\r\n {\r\n \"math\": \"50\",\r\n \"SST\": \"37 \",\r\n \"status\": \"ACTIVE\"\r\n }\r\n ]\r\n }\r\n ]\r\n },\r\n \"timeoutInSeconds\": null\r\n}";
try {
List servicesResponse = null;
Map<String,Object> inputParam=null;
ObjectMapper objectMapper = new ObjectMapper();
request = objectMapper.writeValueAsString(request);
objectMapper.configure(JsonParser.Feature.ALLOW_UNQUOTED_FIELD_NAMES, true);
objectMapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
objectMapper.enable(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT);
inputParam = (Map<String, Object>) objectMapper.readValue(request, Map.class);
servicesResponse = (List)inputParam.get("result");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
我得到的异常是com.fasterxml.jackson.databind.exc.MismatchedInputException:无法构造java.util的实例。LinkedHashMap
(尽管至少存在一个Creator):没有String参数构造函数/工厂方法可以从[源:(String)“”{\r\n“name”:“Loren”,“inputDetails”:[{“subjects”:[{“math”:“50”,“SST”:“37”,“status”:“ACTIVE”}]},“timeoutInSeconds”:null}')处的String值反序列化\r\n“截断”:false,\r\n“result”:[\r\n{\r\n“subjects”:[\r\n\r\n{\r\n”math“:“50”,\r\n”SST“:“37”,\r\n“status”:“ACTIVE”\r\n}\r\n]\r\n},\r\n”timeoutInSeconds“:null\r\n}”;行:1,com.fasterxml.jackson.databind.exc.MimatchedInputException的列:1],来自com.fastrxml.jackson.databind.数据绑定.DeserializationContext.reportInputMimatch(DeserialiizationContext.java:1342)的(MismatchedInput异常.java:63)com.fasterxml.jackson.databind.deser.ValueInstantiator.createFromStringFallbacks(ValueInstantator.java:371),位于com.fastrxml.jackson.databind.deser.std.StdValueInstantianator.createFremString(StdValueInstantantiator.java=323),位于com(MapDeserializer.java:29),位于com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4013),位于Test.main(Test.java:22)
我尝试过研究 Stakoverflow 上可用的类似问题,但找不到具有类似结构的 json,它同时具有字符串和对象。
上面的代码对我有用,用于解析。但是由于您需要结果变量,因此它在inputDetails
中。因此,您需要更改最后一行,如下所示:
List servicesResponse = (List) ((Map<String, Object>)inputParam.get("inputDetails")).get("result");
这就是导致你问题的原因
request = objectMapper.writeValueAsString(request);
它会影响String json,只需将String对象传递给readValue
方法,它也接受字符串
问题内容: 我有一个无效的json字符串,如下所示, 我尝试使用JSON.parse将其转换为对象。但是,这不是有效的json字符串。是否有任何函数可以将这种无效格式转换为有效的json字符串或直接转换为对象? 问题答案: 如果您的示例语法与真实JSON相同,则JSONLint表示您需要对名称和值使用双引号。 仅在这种情况下,请使用以下替换调用: 但是,您首先应该尝试使用有效的Json。
我有一个RestController类,它有一个方法可以根据电影的标题搜索电影: 如果我发送一个json字符串 从邮递员到endpoint,我收到一个空白的回复。 然后我做了一个 就在进入方法后找到字符串filmSearch正是我从邮递员发送的JSON字符串。我的应用程序没有看到JSON和提取值从filmSearch在我的请求附加到应用程序内字符串filmSearch. 如果我移除 在请求映射的一
我无法将给定的Json字符串转换为java对象
问题内容: 从来源来看,我无法影响我在地图中获得的数据,该地图以表示。 我需要处理所包含的数据,最好是(其中的数据非常适合该处理)。 我还需要从数据中生成键列表,因为这些键是事先未知的。 我可以在网上找到的大多数类似问题或多或少都说这是不可能的,但是如果我的地图是,则表明数据在那里,可读性为。 我该怎么办fmt.Println可以做什么? 问题答案: 处理未知接口的一种安全方法,只需使用fmt.S
问题内容: 我有两个字符串数组键和值 将它们转换为地图的最快方法是什么?我知道我们可以遍历它们。但是,这里有实用程序吗? 问题答案: 比这快吗?
问题内容: 您如何将此String转换为gson.JsonArray? 这是我的代码: 这是将这个Collections字符串转换为JSonArray的方法吗? 问题答案: 要在JSON数组中包含字符串值,必须记住在Java程序中用反斜杠转义双引号。请参见下面的声明。 您在main()方法中的代码可以正常工作。以下只是对main()方法中的代码的微小修改。 最后,请记住在语句“ com.googl