我使用多个转换库将xml转换为JSON得到以下结果。如您所见,属性名称属性将丢失,Item name属性也将丢失。为什么呢?
有没有人建议我如何更改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>
重新调整
{"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"}]}}}
答案 0 :(得分:1)
如果您使用此转换工具,则可能永远不应使用源XML文件中的属性。
我看到的主要问题是您没有自己设计数据并尝试使用奇怪的工具。如果在服务器端使用ASP.NET,那么设计C#类,使用任何测试数据初始化类的实例并使用DataContractJsonSerializer之类的JSON序列化或使用简单的Web服务要好得多。以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?为例。