Je me demandais juste si je poussais JSON trop loin? et si quelqu'un a déjà frappé ça?Postage JSON, suis-je pousser JSON trop loin?
Je dispose d'un fichier xml:
<?xml version="1.0" encoding="UTF-8"?>
<customermodel:Customer xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:customermodel="http://customermodel" xmlns:personal="http://customermodel/personal" id="1" age="1" name="Joe">
<bankAccounts xsi:type="customermodel:BankAccount" accountNo="10" bankName="HSBC" testBoolean="true" testDate="2006-10-23" testDateTime="2006-10-23T22:15:01+08:00" testDecimal="20.2" testTime="22:15:01+08:00">
<count>0</count>
<bankAddressLine>HSBC</bankAddressLine>
<bankAddressLine>London</bankAddressLine>
<bankAddressLine>31 florence</bankAddressLine>
<bankAddressLine>Swindon</bankAddressLine>
</bankAccounts>
</customermodel:Customer>
qui contient des éléments et attributs ....
qui quand je convertir en JSON me donne:
{"customermodel:Customer":{"id":"1","name":"Joe","age":"1","xmlns:xsi":"http://www.w3.org/2001/XMLSchema-instance","bankAccounts":{"testDate":"2006-10-23","testDecimal":"20.2","count":"0","testDateTime":"2006-10-23T22:15:01+08:00","bankAddressLine":["HSBC","London","31 florence","Swindon"],"testBoolean":"true","bankName":"HSBC","accountNo":"10","xsi:type":"customermodel:BankAccount","testTime":"22:15:01+08:00"},"xmlns:personal":"http://customermodel/personal","xmlns:customermodel":"http://customermodel"}}
Alors j'envoie ceci aussi le client .. qui couvre un objet js (ou autre) édite des valeurs (les éléments) et les renvoie ensuite au serveur.
Alors je reçois la chaîne JSON, et convertir ce en XML:
<customermodel:Customer>
<id>1</id>
<age>1</age>
<name>Joe</name>
<xmlns:xsi>http://www.w3.org/2001/XMLSchema-instance</xmlns:xsi>
<bankAccounts>
<testDate>2006-10-23</testDate>
<testDecimal>20.2</testDecimal>
<testDateTime>2006-10-23T22:15:01+08:00</testDateTime>
<count>0</count>
<bankAddressLine>HSBC</bankAddressLine>
<bankAddressLine>London</bankAddressLine>
<bankAddressLine>31 florence</bankAddressLine>
<bankAddressLine>Swindon</bankAddressLine>
<accountNo>10</accountNo>
<bankName>HSBC</bankName>
<testBoolean>true</testBoolean>
<xsi:type>customermodel:BankAccount</xsi:type>
<testTime>22:15:01+08:00</testTime>
</bankAccounts>
<xmlns:personal>http://customermodel/personal</xmlns:personal>
<xmlns:customermodel>http://customermodel</xmlns:customermodel>
</customermodel:Customer>
Et il y a le problème, est ne semble pas connaître la différence entre les éléments/attributs, donc je ne peux pas vérifier contre un XSD pour vérifier cela est maintenant valide?
Y at-il une solution à cela?
Je ne peux pas être le premier à rencontrer ce problème?
Je ne sais pas ce qu'il y a de mieux, et je l'ai souligné ... mais il fallait cocher des cases. Je pense que je pourrais étendre le sérialiseur à asd $ aux noms d'attributs, puis modifier le sérialiseur (retour à xml) pour l'analyser en fonction des attributs $ =. – joe90
Peu importe la forme, les choses à noter sont: 1) assurez-vous que les identifiants ne sont pas utilisés dans le XML, 2) test, test, test! :) –