Fórum Root.cz
Hlavní témata => Vývoj => Téma založeno: Giovanna 16. 11. 2017, 01:11:10
-
Dobrý den,
pokouším se o validaci jsonu pomocí schematu dřív než se pomocí knihovny z nugetu Newtonsoft.Json pokusím o deserializaci, ale nedaří se mi. Proto to zkouším tady. Pomůžete mi, prosím?
Mám schema:
{
'type': 'array',
'items': {
'type': 'object',
'properties': {
'ErrorCode': {'type':'string'},
'Message': {'type':'string'},
'ParamName': {'type':'string'},
'Miscellaneous': {'type':'string'}
}
}
}
a json
{[
{
"ErrorCode": "Client not found",
"Message": "Client token already expired."
}
]}
jenže mi to hlásí při validaci online na netu:
Error parsing JSON
Message:
Invalid property identifier character: [.
Nevím, kde mám chybu. Pokud byste někdo věděli, prosím o radu a děkuju.
G.
-
Pro validaci používám https://www.jsonschemavalidator.net/ a odsud i ta chybová hláška.
-
Zdar, skusil by som zahodit vonkajsie zlozene zatvorky - takto to vyzera, ze telo objektu je pole.
-
Nejrychlejsi validace JSONu je prevod do XML a match proti DTD. Cokoli jineho je berlicka a hack.
-
Cokoli jineho je berlicka a hack.
Tak urcite ;-)
-
Nemelo by tam byt neco jako
{ "items" : [ ... ] }
-
Telo oblektu má být pole, tak se zeptám jinak - nevíte, co mám špatně na schematu, že mi nezvaliduje validní ověřeno deserializací json např jako:
{[
{
"ErrorCode": "Client not found",
"Message": "Client token already expired."
},
{
"ErrorCode": "Resource not found",
"Message": "Resource already expired."
}
]}
-
{
"chybiTiPropertyProPole": [{
"ErrorCode": "Client not found",
"Message": "Client token already expired."
},
{
"ErrorCode": "Resource not found",
"Message": "Resource already expired."
}
]
}
-
Ten JSON je nevalidní sám o sobě, pokud má být tělo Array, pak jedině takhle:
[
{
"ErrorCode": "Client not found",
"Message": "Client token already expired."
}
]
-
Nebo si muzes nadefinovat klasicky XML schema a validovat s nim JSON... nevim, v cem to pises, ale v Jave to neni problem
-
Telo oblektu má být pole, tak se zeptám jinak - nevíte, co mám špatně na schematu, že mi nezvaliduje validní ověřeno deserializací json např jako:
{[
{
"ErrorCode": "Client not found",
"Message": "Client token already expired."
},
{
"ErrorCode": "Resource not found",
"Message": "Resource already expired."
}
]}
Můžu se zeptat, čím to proboha deserializuješ, že to sežere? Tohle není vůbec JSON a každý parser má vyhodit chybu! JSON schema je zcela irelevantní, do validátoru se to ani nedostane.
A to je i odpověď na původní otázku.
-
tohle sežere jako výraz jakýkoliv javascript engine (předpokládám, že se v posledním roce moc nezměnilo), není to json, ale js konstrukce, takže mu to funguje buď v prohlížeči nebo třeba v node.js.
-
tohle sežere jako výraz jakýkoliv javascript engine (předpokládám, že se v posledním roce moc nezměnilo), není to json, ale js konstrukce, takže mu to funguje buď v prohlížeči nebo třeba v node.js.
Je to validní block statement. Není to validní výraz.
-
tohle sežere jako výraz jakýkoliv javascript engine (předpokládám, že se v posledním roce moc nezměnilo), není to json, ale js konstrukce, takže mu to funguje buď v prohlížeči nebo třeba v node.js.
Je to validní block statement. Není to validní výraz.
Máš pravdu, díky za opravu, chtěl jsem statemant přeložit do češtiny, ale na lepší slovo jsem nepřišel, měl jsem zůstat u osvědčené terminologie :)
-
tohle sežere jako výraz jakýkoliv javascript engine (předpokládám, že se v posledním roce moc nezměnilo), není to json, ale js konstrukce, takže mu to funguje buď v prohlížeči nebo třeba v node.js.
Je to validní block statement. Není to validní výraz.
Máš pravdu, díky za opravu, chtěl jsem statemant přeložit do češtiny, ale na lepší slovo jsem nepřišel, měl jsem zůstat u osvědčené terminologie :)
o terminologii nejde. Nebude to fungovat, když to použijete jako parametr funkce, nebo výraz na pravé straně přiřazení. Což asi chcete.