I produce the following JSON from an API call:
{
"breviario": {
"info": {
"fecha": "Martes 20 de febrero del 2018",
"tiempo": "TIEMPO DE CUARESMA",
"semana": "Semana I",
"mensaje": "",
"salterio": ""
},
"contenido": {
"himno": "Amigo de los hombres, Jesucristo,~tú solo das sentido a nuestra historia,~y, con los ojos fijos al futuro,~la Iglesia vive fiel a tu memoria.§Este tiempo de ayuno te presenta~de nosotros la parte más oscura,~y tus manos clavadas al madero~nos devuelven tu paz y tu ternura.§A lo largo del día no nos dejes,~no nos falte la luz de tu mirada:~llena de amor los pasos que caminan~de este mundo a la luz de tu alborada. Amén.",
"salmos": {
"tipo": 00100,
"s1": {
"orden": "1",
"antifona": "Han llegado los días de penitencia; expiemos nuestros pecados y salvaremos nuestras almas.",
"ref": "Salmo 118, 1-8",
"tema": "Himno a la revelación de la Ley",
"intro": "El amor de Dios consiste~en guardar sus mandamientos.~(1Jn 5, 3)",
"parte": "",
"salmo": "Dichoso el que, con vida intachable,_camina en la voluntad del Señor;_dichoso el que, guardando sus preceptos,_lo busca de todo corazón;_el que, sin cometer iniquidad,_anda por sus senderos.§Tú promulgas tus decretos_para que se observen exactamente._Ojalá esté firme mi camino,_para cumplir tus consignas;_entonces no sentiré vergüenza_al mirar tus mandatos.§Te alabaré con sincero corazón_cuando aprenda tus justos mandamientos._Quiero guardar tus leyes exactamente,_tú no me abandones."
},
"s2": {
"orden": "2",
"antifona": "«Por mi vida dice el Señor, no me complazco en la muerte del pecador, sino en que cambie de conducta y viva.»",
"ref": "Salmo 12",
"tema": "Súplica del justo en sus dificultades cotidianas",
"intro": "El Dios de la esperanza~os colme de todo gozo.~(Rm 15, 13)",
"parte": "",
"salmo": "¿Hasta cuándo, Señor, seguirás olvidándome?_Hasta cuándo me esconderás tu rostro?_¿Hasta cuándo he de estar preocupado,_con el corazón apenado todo el día?_¿Hasta cuándo va a triunfar mí enemigo?§Atiende y respóndeme, Señor, Dios mío;_da luz a mis ojos para que no me duerma en la muerte,_para que no diga mi enemigo: «Lo he vencido»,_ni se alegre, mi adversario de mi fracaso.§Porque yo confío en tu misericordia:_alegra mi corazón con tu auxilio,_y cantaré al Señor por el bien que me ha hecho."
},
"s3": {
"orden": "3",
"antifona": "Acreditémonos ante Dios por nuestra constancia en las tribulaciones, por nuestra sed de ser justos.",
"ref": "Salmo 13",
"tema": "Corrupción y necedad del impío",
"intro": "Donde abundó el pecado~sobreabundó la gracia.~(Rm 5, 20)",
"parte": "",
"salmo": "Dice el necio para sí:_«No hay Dios.»_Se han corrompido, cometiendo abominaciones,_no hay quien obre bien.§El Señor observa desde el cielo_a los hijos de Adán,_para ver si hay alguno sensato_que busque a Dios.§Todos se extravían,_igualmente obstinados,_no hay uno que obre bien,_ni uno solo.§Pero ¿no aprenderán los malhechores_que devoran a mi pueblo como pan_y no invocan al Señor?§Pues temblarán de espanto,_porque Dios está con los justos._Podéis burlaros de los planes del desvalido,_pero el Señor es su refugio.§¡Ojalá venga desde Sión la salvación de Israel!_Cuando el Señor cambie la suerte de su pueblo,_se alegrará Jacob y gozará Israel."
}
},
"biblica": {
"ref": "Jl, 2, 17",
"texto": "Entre el atrio y el altar lloren los sacerdotes, ministros del Señor, y digan: «Perdona, Señor, a tu pueblo; no entregues tu heredad al oprobio, no la dominen las naciones.»",
"responsorio": "Señor, crea en mí un corazón puro.|Renuévame por dentro con espíritu firme.",
"codigo": "201"
},
"oracion": "Señor, mira a tu familia~y haz que nuestro espíritu brille junto a ti~con el deseo de poseerte,~al mortificarnos mediante la penitencia corporal.~Por nuestro Señor Jesucristo."
}
}
}
The problem is that this value: "tipo": 00100,
makes me the JSON invalid. For example, when validating it in jsonlint , it gives me the following error:
Error: Parse error on line 13: ...os": { "type": 00100, "s1": { ----------------------^ Expecting 'STRING', 'NUMBER', 'NULL', 'TRUE', 'FALSE', '{', '[', got 'undefined'
If I remove the leading zeros, for example: "tipo": 100,
, or if I put: "tipo": 0,
or enclose it in quotes: "tipo": "00100",
... the error disappears.
What could be the cause of the error? I need the data like this, with all its digits, to do operations with it within an Android App. I could send it as a string, but I am surprised by this error and would like to know what is causing it.
A number starting with 0 and not followed by
.
, is not considered decimal, but octal. For example:The specification says:
"A number is very much like a C or Java number, except that the octal and hexadecimal formats are not used."
Which means a numeric type is very much like C or Java's use of this data type, except that octals and hexadecimals are not used .Following is a representation of how the number type can be composed , where you can see that starting with 0 is only allowed if :
Therefore, JSON does not support the Octal type , so you should use quotes.
If you wish, you have more information at this link . (in English)
JSON does not allow numbers starting with 0 since . as @lois6b says in his comment, he interprets it as octal.
To solve the problem you should put the quotes, thus converting it to String, as you have tried and said that the error no longer appears. However, where you use this JSON you should keep in mind that the "type" is of type String and not a number.
I leave you the link that is in the comments and that directs you to an answer in English.