Ich habe eine Zeichenfolge, die im JSON-Format ist, nur keine der Tasten oder Werte, die von Anführungszeichen umgeben ist. Zum Beispiel habe ich dies:konvertiert JSON-String ohne Anführungszeichen in eine Karte
String json = "{name: Bob, state: Colorado, Friends: [{ name: Dan, age: 23 }, {name: Zane, age: 24 }]}"
Ich möchte dieses eine Karte werden, wie so aussieht:
Map<String, Object> friend1Map = new HashMap<>();
friend1Map.put("name", "Dan");
friend1Map.put("age", 23);
Map<String, Object> friend2Map = new Hashmap<>();
friend2Map.put("name", "Zane");
friend2Map.put("age", 24);
Map<String, Object> newMap = new HashMap<>();
newMap.put("name", "Bob");
newMap.put("state", "Colorado");
newMap.put("Friends", Arrays.asList(friend1Map, friend2Map));
Ich habe versucht, die folgenden zwei Methoden:
ObjectMapper mapper = new ObjectMapper();
mapper.readValue(json, new TypeReference<Map<String, Object>>() {});
Dieser Wille einen Fehler werfen und sagen:
Unexpected character ('n'): was expecting double-quote to start field name
Dann habe ich versucht, die Config von Mapper Wechsel:
mapper.configure(JsonParser.Feature.ALLOW_UNQUOTED_FIELD_NAMES, true);
mapper.readValue(json, new TypeReference<Map<String, Object>>() {});
Aber das warf einen Fehler zu sagen:
com.fasterxml.jackson.core.JsonParseException: Unrecognized token 'Bob': was expecting ('true', 'false' or 'null')
at [Source: {name: Bob, state: Colorado, Friends: [{ name: Dan, age: 23 }, {name: Zane, age: 24 }]}; line: 1, column: 11]
Gibt es eine Möglichkeit, diese Karte zu bekommen, wenn Zitate sind nicht im JSON-String enthalten?
Ihr JSON-String ungültig ist, testen Sie es hier: http://jsonlint.com –
wie so? und anscheinend braucht dieser Kommentar 15 Zeichen, um ihn hinzuzufügen – user2869231
oder besser, wie würde ich es gültig machen? Es ist klar, dass das Problem darin besteht, die Zitate nicht zu haben. Müsste ich einige böse Splits machen? – user2869231