Ho una stringa in formato Json, solo nessuna delle chiavi o dei valori è circondata da virgolette. Per esempio, io ho questo:Converti stringa json senza virgolette in una mappa
String json = "{name: Bob, state: Colorado, Friends: [{ name: Dan, age: 23 }, {name: Zane, age: 24 }]}"
voglio che questo diventi una mappa che assomiglia così:
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));
ho provato i seguenti due metodi:
ObjectMapper mapper = new ObjectMapper();
mapper.readValue(json, new TypeReference<Map<String, Object>>() {});
Questa volontà genera un errore, dicendo:
Unexpected character ('n'): was expecting double-quote to start field name
Poi ho provato a cambiare la configurazione di mapping:
mapper.configure(JsonParser.Feature.ALLOW_UNQUOTED_FIELD_NAMES, true);
mapper.readValue(json, new TypeReference<Map<String, Object>>() {});
Ma questo ha gettato un errore che dice:
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]
C'è un modo di ottenere questo Map quando le citazioni non sono inclusi nella stringa JSON?
La stringa JSON non è valida, testarla qui: http://jsonlint.com –
in che modo? e apparentemente questo commento ha bisogno di 15 caratteri per aggiungerlo – user2869231
o meglio, come lo renderei valido? Chiaramente il problema è nel non avere le virgolette. Dovrei fare qualche spaccatura brutta? – user2869231