簡體   English   中英

C#中來自XML的JSON中的單元素嵌套數組

[英]Single Element Nested Arrays in JSON from XML in C#

我正在使用從XML序列化的JSON對象。 XML的所有子節點都需要序列化為數組。 我已經嘗試了幾天,卻一無所獲,但是我已經接近了。 問題在於JsonConvert.SerializeObject()似乎將其視為單個項目數組,然后在JSON中刪除了[]數組指示符。 這是我一直在做的事的例子。

期望的結果是這樣的:

{"Foo":[{"Bar":[{"This":"stuff"}]}]}

到目前為止,最接近我的是這樣的東西...

        XElement bar = new XElement("Bar");
        bar.SetAttributeValue("This", "stuff");
        XElement[] foo = { new XElement("Foo", bar) };

但這仍然不太正確。 運行JsonConvert.SerializeObject(foo)后到達這里的結果是這樣的...

{"Foo":{"Bar":{"This":"stuff"}}}

對於API,即使父代的每個子代只包含1個元素,也必須是數組類型。 我無法使用此請求的XML版本,如下所示...

 <Foo>
  <Bar This="stuff"/>
 </Foo>

我感覺自己正在忽略一些簡單的事情,或者使它變得比它需要的復雜,但是我確實可以使用一些幫助。

謝謝!

評論中的Hunts Chen具有重定向來解決我的問題。 這就是工作代碼最終的樣子。

        XNamespace ns = "http://james.newtonking.com/projects/json";

        XElement bar = new XElement("Bar");
        userdata.SetAttributeValue(ns + "Array", true);
        userdata.SetAttributeValue("This", "stuff");
        XElement foo = new XElement("Foo", bar);
        parts.SetAttributeValue(ns+"Array", true);

        XDocument xmlbody = new XDocument();

        xmlbody.Add(foo);

        string json = JsonConvert.SerializeObject(xmlbody);

由於每個節點只有一個元素,因此必須強制使用該數組。 回報正是我想要的。

 {"Foo":[{"Bar":[{"@This":"stuff"}]}]}}

謝謝!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM