Converting JSON to XML

后端 未结 6 1063
孤街浪徒
孤街浪徒 2020-12-10 02:58

I trying to convert JSON output into XML. Unfortunately I get this error:

JSON root object has multiple properties. The root object must have a single

相关标签:
6条回答
  • 2020-12-10 03:27

    Adding on @jwaliszko's answer, converting json to XDocument:

    XDocument xml = JsonConvert.DeserializeXNode(json);
    
    0 讨论(0)
  • 2020-12-10 03:28

    I thought it's worth linking to the Documentation for turning xml to json and the other way around.

    The guys are right..

    // To convert an XML node contained in string xml into a JSON string   
    XmlDocument doc = new XmlDocument();
    doc.LoadXml(xml);
    string jsonText = JsonConvert.SerializeXmlNode(doc);
    
    // To convert JSON text contained in string json into an XML node
    XmlDocument doc = (XmlDocument)JsonConvert.DeserializeXmlNode(json);
    
    0 讨论(0)
  • 2020-12-10 03:37

    Your shared JSON is invalid please go through http://jsonformatter.curiousconcept.com/ and validate your JSON first.

    Yourt JSON should look like:

    {
       "id":"108013515952807",
       "posts":{
          "data":[
             {
                "id":"108013515952807_470186843068804",
                "created_time":"2013-05-14T20:43:28+0000"
             },
             {
                "message":"TEKST",
                "id":"108013515952807_470178529736302",
                "created_time":"2013-05-14T20:22:07+0000"
             }
          ]
       }
    }
    
    0 讨论(0)
  • 2020-12-10 03:38

    DeserializeXmlNode returns XDcument. If needed XNode use FirstNode.

    //string jsonOutput="{"id":"108013515952807","posts":{"data":[{"id":"108013515952807_470186843068804","created_time":"2013-05-14T20:43:28+0000"},{"message":"TEKST","id":"108013515952807_470178529736302","created_time":"2013-05-14T20:22:07+0000"}";
    var myelement= JsonConvert.DeserializeXmlNode(jsonOutput, "myelement").FirstNode;
    
    0 讨论(0)
  • 2020-12-10 03:45

    You can do JSON-to-XML also by using the .NET Framework (System.Runtime.Serialization.Json):

    private static XDocument JsonToXml(string jsonString)
    {
        using (var stream = new MemoryStream(Encoding.ASCII.GetBytes(jsonString)))
        {
            var quotas = new XmlDictionaryReaderQuotas();
            return XDocument.Load(JsonReaderWriterFactory.CreateJsonReader(stream, quotas));
        }
    }
    
    0 讨论(0)
  • 2020-12-10 03:48

    Despite the fact your JSON provided in the question is not complete, you have multiple properties at the top level as indicated by the exception. You have to define the root for it to get valid XML:

    var doc = JsonConvert.DeserializeXmlNode(jsonOutput, "root");
    

    EDIT: In order to print out your XML with indentation you can use XDocument class from System.Xml.Linq namespace: XDocument.Parse(doc.InnerXml).

    0 讨论(0)
提交回复
热议问题