2010-05-07 2 views
3

Я получаю следующий результат от преобразования xml в JSON, используя более чем одну библиотеку преобразования. Как вы можете видеть, атрибуты имени свойства теряются, также как и атрибуты имени элемента. Зачем?xml данные, потерянные в преобразовании JSON

Есть ли у кого-нибудь рекомендации относительно того, как я могу изменить свой XML, чтобы сделать его более удобным для преобразования?

<Asset name="xyz"> 
    <Property name="p1">Value 1</Property> 
    <Property name="p2">Value 2</Property> 
    <TimeSeries name="TimeSeries Name 1"> 
    <Item name="30 Apr 2009">97.47219</Item> 
    <Item name="01 May 2009">97.16496</Item> 
    <Item name="05 May 2009">97.34606</Item> 
    </TimeSeries> 
</Asset> 

Retuns

{"Asset":{"@attributes":{"name":"xyz"}, 
"Property":["Value 1","Value 2"], 
"TimeSeries":{"@attributes":{"name":"TimeSeries Name 1"}, 
"Item":["97.47219","97.16496","97.34606"]}}} 

Я попытался следующие, но как XML и JSON намного более многословен:

<Asset name="xyz"> 
    <Property><name>p1</name><value>Value 1</value></Property> 
    <Property><name>p2</name><value>Value 2</value></Property> 
    <TimeSeries name="TimeSeries Name 1"> 
     <Item><date>30 Apr 2009</date><value>97.47219</value></Item> 
     <Item><date>01 May 2009</date><value>97.16496</value></Item> 
     <Item><date>05 May 2009</date><value>97.34606</value></Item> 
    </TimeSeries> 
</Asset> 

в результате ...

{"Asset":{"@attributes":{"name":"xyz"}, 
"Property":[{"name":"p1","value":"Value 1"},{"name":"p2","value":"Value 2"}], 
"TimeSeries":{"@attributes":{"name":"TimeSeries Name 1"}, 
    "Item":[{"date":"30 Apr 2009","value":"97.47219"}, 
    {"date":"01 May 2009","value":"97.16496"},{"date":"05 May 2009","value":"97.34606"}]}}} 

ответ

1

Возможно, вы никогда не должны использовать атрибуты в исходном XML-файле, если вы используете этот инструмент преобразования.

Основная проблема, которую я вижу, заключается в том, что вы сами не создаете данные и не пытаетесь использовать странный инструмент. Если вы используете ASP.NET на стороне сервера, гораздо лучше спроектировать свои классы C#, инициализировать экземпляр классов с помощью любых тестовых данных и использовать сериализацию JSON, такую ​​как DataContractJsonSerializer или использовать простой веб-сервис. Посмотрите на Can I return JSON from an .asmx Web Service if the ContentType is not JSON? или How do I build a JSON object to send to an AJAX WebService? в качестве примеров.

Смежные вопросы