Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: Giovanna 16. 11. 2017, 01:11:10

Název: Validace Jsonu pomocí schématu
Přispěvatel: 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:

Kód: [Vybrat]
{
                  'type': 'array',
                  'items': {
                    'type': 'object',
            'properties': {
                        'ErrorCode': {'type':'string'},
                        'Message': {'type':'string'},
                        'ParamName': {'type':'string'},
                        'Miscellaneous': {'type':'string'}
                        }
                    }                   
}

a json

Kód: [Vybrat]
{[
  {
    "ErrorCode": "Client not found",
    "Message": "Client token already expired."
  }
]}

jenže mi to hlásí při validaci online na netu:

Citace
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.
Název: Re:Validace Jsonu pomocí schématu
Přispěvatel: Giovanna 16. 11. 2017, 01:20:18
Pro validaci používám https://www.jsonschemavalidator.net/ a odsud i ta chybová hláška.
Název: Re:Validace Jsonu pomocí schématu
Přispěvatel: soyo 16. 11. 2017, 06:38:36
Zdar, skusil by som zahodit vonkajsie zlozene zatvorky - takto to vyzera, ze telo objektu je pole.
Název: Re:Validace Jsonu pomocí schématu
Přispěvatel: alfonz 16. 11. 2017, 09:36:54
Nejrychlejsi validace JSONu je prevod do XML a match proti DTD. Cokoli jineho je berlicka a hack.
Název: Re:Validace Jsonu pomocí schématu
Přispěvatel: Unknown 16. 11. 2017, 10:11:09
Cokoli jineho je berlicka a hack.

Tak urcite ;-)
Název: Re:Validace Jsonu pomocí schématu
Přispěvatel: mhepp 16. 11. 2017, 10:34:48
Nemelo by tam byt neco jako
Kód: [Vybrat]
{ "items" : [ ... ] }
Název: Re:Validace Jsonu pomocí schématu
Přispěvatel: Giovanna 16. 11. 2017, 16:17:04
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:

Kód: [Vybrat]
{[
  {
    "ErrorCode": "Client not found",
    "Message": "Client token already expired."
  },
  {
    "ErrorCode": "Resource not found",
    "Message": "Resource already expired."
  }
]}

Název: Re:Validace Jsonu pomocí schématu
Přispěvatel: alfonz 16. 11. 2017, 16:25:13
Kód: [Vybrat]
{
"chybiTiPropertyProPole": [{
"ErrorCode": "Client not found",
"Message": "Client token already expired."
},
{
"ErrorCode": "Resource not found",
"Message": "Resource already expired."
}
]
}
Název: Re:Validace Jsonu pomocí schématu
Přispěvatel: Honza 16. 11. 2017, 16:36:21
Ten JSON je nevalidní sám o sobě, pokud má být tělo Array, pak jedině takhle:
Kód: [Vybrat]
[
  {
    "ErrorCode": "Client not found",
    "Message": "Client token already expired."
  }
]
Název: Re:Validace Jsonu pomocí schématu
Přispěvatel: Ladislav Zitka 22. 11. 2017, 18:43:04
Nebo si muzes nadefinovat klasicky XML schema a validovat s nim JSON... nevim, v cem to pises, ale v Jave to neni problem
Název: Re:Validace Jsonu pomocí schématu
Přispěvatel: Kamil Podlešák 22. 11. 2017, 21:54:00
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:

Kód: [Vybrat]
{[
  {
    "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.
Název: Re:Validace Jsonu pomocí schématu
Přispěvatel: Tomas2 23. 11. 2017, 00:21:23
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.
Název: Re:Validace Jsonu pomocí schématu
Přispěvatel: gll 23. 11. 2017, 05:26:47
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.
Název: Re:Validace Jsonu pomocí schématu
Přispěvatel: Tomas2 23. 11. 2017, 20:43:14
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 :)
Název: Re:Validace Jsonu pomocí schématu
Přispěvatel: gll 24. 11. 2017, 08:11:09
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.