JSON转换中丢失了xml数据

时间:2010-05-07 13:30:27

标签: asp.net javascript xml json

我使用多个转换库将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"}]}}}

1 个答案:

答案 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?为例。