xmlmapper unrecognized unknown not marked known jsonignoreproperties ignorable fields java jackson

java - unknown - unrecognized field,not marked as ignorable



Configure Jackson para deserializar un solo JSON entre comillas(no vĂ¡lido) (3)

Así es como funciona en mi caso:

var jsonString =''{"it":"Stati Uniti d''America"}''; jsonString =jsonString.replace("''", "////u0027");

Soy un novato en el uso de la biblioteca de Jackson.

Estoy tratando de hacer esto [ver más abajo], y es un error de lanzamiento.

String x="{''candidateId'':''k'',''candEducationId'':1,''activitiesSocieties'':''Activities for cand1''}"; ObjectMapper mapper = new ObjectMapper(); try { JsonNode df=mapper.readValue(x,JsonNode.class); int i=0; } catch .....

Excepción:

org.codehaus.jackson.JsonParseException: Unexpected character ('''''' (code 39)): was expecting double-quote to start field name at [Source: java.io.StringReader@1afd1810; line: 1, column: 3] at org.codehaus.jackson.JsonParser._constructError(JsonParser.java:1291)

Mientras que lo mismo funciona si sustituyo la comilla simple ('') por comillas dobles (").


Las cadenas en JSON solo pueden especificarse con comillas dobles ( " ), no comillas simples ( '' ), esta es la razón de su error; use comillas dobles.

Aquí está el diagrama de tuberías que especifica cadenas JSON válidas (¡tenga en cuenta que solo se pueden encapsular con comillas dobles!)

Diagrama de tuberías de cadenas JSON válidas http://www.json.org/string.gif

(Vea json.org para una especificación completa de JSON.)


No es JSON válido, pero puedes decirle a Jackson que lo permita. Así es cómo.

String x = "{''candidateId'':''k'',''candEducationId'':1,''activitiesSocieties'':''Activities for cand1''}"; ObjectMapper mapper = new ObjectMapper(); mapper.configure(JsonParser.Feature.ALLOW_SINGLE_QUOTES, true); JsonNode df = mapper.readValue(x, JsonNode.class); System.out.println(df.toString()); // output: {"candidateId":"k","candEducationId":1,"activitiesSocieties":"Activities for cand1"}