【问题标题】:JsonConvert not accepting stringify stringJsonConvert 不接受字符串化字符串
【发布时间】:2014-05-29 13:20:47
【问题描述】:

下面是我的字符串化 JSON 数据 "{\"TimeSheet\":{\"TimeSheetDetail\":[{\"TimeSheetDetailsDate\":\"Mon May 26 00:00:00 UTC+0530 2014\",\"Hours\":\"732\"},{\"TimeSheetDetailsDate\":\"Tue May 27 00:00:00 UTC+0530 2014\",\"Hours\":\"732\"},{\"TimeSheetDetailsDate\":\"Wed May 28 00:00:00 UTC+0530 2014\",\"Hours\":\"1281\"},{\"TimeSheetDetailsDate\":\"Thu May 29 00:00:00 UTC+0530 2014\",\"Hours\":\"1281\"},{\"TimeSheetDetailsDate\":\"Fri May 30 00:00:00 UTC+0530 2014\",\"Hours\":\"1281\"},{\"TimeSheetDetailsDate\":\"Sat May 31 00:00:00 UTC+0530 2014\",\"Hours\":\"1281\"},{\"TimeSheetDetailsDate\":\"Sun Jun 1 00:00:00 UTC+0530 2014\",\"Hours\":\"1281\"}]}}"

在 MVC 中我使用下面的代码将 JSON 数据修改为 XML

var doc = JsonConvert.DeserializeXmlNode("{\"root\":[" + timeSheetJSon + "]}", "root");

XDocument.Parse(doc.InnerXml);

返回为<root><root>{"TimeSheet":{"TimeSheetDetail":[{"TimeSheetDetailsDate":"Mon May 26 00:00:00 UTC+0530 2014","Hours":"732"},{"TimeSheetDetailsDate":"Tue May 27 00:00:00 UTC+0530 2014","Hours":"732"},{"TimeSheetDetailsDate":"Wed May 28 00:00:00 UTC+0530 2014","Hours":"1281"},{"TimeSheetDetailsDate":"Thu May 29 00:00:00 UTC+0530 2014","Hours":"1281"},{"TimeSheetDetailsDate":"Fri May 30 00:00:00 UTC+0530 2014","Hours":"1281"},{"TimeSheetDetailsDate":"Sat May 31 00:00:00 UTC+0530 2014","Hours":"1281"},{"TimeSheetDetailsDate":"Sun Jun 1 00:00:00 UTC+0530 2014","Hours":"1281"}]}}</root></root>

但我需要的是 XML 格式的。 如果有任何解决方案,那将是很大的帮助。

【问题讨论】:

  • 您希望 asp.net 返回 XML 或在 Javascript 中将 JSON 转换为 XML?
  • 发布的示例对我来说效果很好。反序列化创建XmlDocumentXDocument.Parse 创建XDocument。两者都是正确的格式。使用 JSON.NET 6.0 版测试。

标签: jquery xml asp.net-mvc json json.net


【解决方案1】:
[TestMethod]
public void ConvertJsonToXml()
{
    string json = "{\"TimeSheet\":{\"TimeSheetDetail\":[{\"TimeSheetDetailsDate\":\"Mon May 26 00:00:00 UTC+0530 2014\",\"Hours\":\"732\"},{\"TimeSheetDetailsDate\":\"Tue May 27 00:00:00 UTC+0530 2014\",\"Hours\":\"732\"},{\"TimeSheetDetailsDate\":\"Wed May 28 00:00:00 UTC+0530 2014\",\"Hours\":\"1281\"},{\"TimeSheetDetailsDate\":\"Thu May 29 00:00:00 UTC+0530 2014\",\"Hours\":\"1281\"},{\"TimeSheetDetailsDate\":\"Fri May 30 00:00:00 UTC+0530 2014\",\"Hours\":\"1281\"},{\"TimeSheetDetailsDate\":\"Sat May 31 00:00:00 UTC+0530 2014\",\"Hours\":\"1281\"},{\"TimeSheetDetailsDate\":\"Sun Jun 1 00:00:00 UTC+0530 2014\",\"Hours\":\"1281\"}]}}";
    var xdoc = JsonConvert.DeserializeXNode(json);
    var xml = xdoc.ToString();
    Assert.IsNotNull(xml);
}

xml结果:

<TimeSheet>
  <TimeSheetDetail>
    <TimeSheetDetailsDate>Mon May 26 00:00:00 UTC+0530 2014</TimeSheetDetailsDate>
    <Hours>732</Hours>
  </TimeSheetDetail>
  <TimeSheetDetail>
    <TimeSheetDetailsDate>Tue May 27 00:00:00 UTC+0530 2014</TimeSheetDetailsDate>
    <Hours>732</Hours>
  </TimeSheetDetail>
  <TimeSheetDetail>
    <TimeSheetDetailsDate>Wed May 28 00:00:00 UTC+0530 2014</TimeSheetDetailsDate>
    <Hours>1281</Hours>
  </TimeSheetDetail>
  <TimeSheetDetail>
    <TimeSheetDetailsDate>Thu May 29 00:00:00 UTC+0530 2014</TimeSheetDetailsDate>
    <Hours>1281</Hours>
  </TimeSheetDetail>
  <TimeSheetDetail>
    <TimeSheetDetailsDate>Fri May 30 00:00:00 UTC+0530 2014</TimeSheetDetailsDate>
    <Hours>1281</Hours>
  </TimeSheetDetail>
  <TimeSheetDetail>
    <TimeSheetDetailsDate>Sat May 31 00:00:00 UTC+0530 2014</TimeSheetDetailsDate>
    <Hours>1281</Hours>
  </TimeSheetDetail>
  <TimeSheetDetail>
    <TimeSheetDetailsDate>Sun Jun 1 00:00:00 UTC+0530 2014</TimeSheetDetailsDate>
    <Hours>1281</Hours>
  </TimeSheetDetail>
</TimeSheet>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-08-05
    • 1970-01-01
    • 1970-01-01
    • 2015-07-02
    • 2021-06-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多