2015-04-23 87 views
1

我試圖建立一些數據網絡API響應的JSON表示。例如數據的XML表示看起來像如何表示父元素的文本部分內的XML元素JSON

<parent> 
    parent text <child>child text</child> more parent text 
</parent> 

有人可以告訴我這個XML在JSON中的正確表示嗎?或者有什麼建議?子元素可能並不總是存在,但當它存在時,它的位置必須被保留。

回答

1

有表示,隨着JSON沒有明顯的方式。 JSON中沒有與XML中的文本節點和元素直接等價的內容。

的一種方法是用字符串作爲文本的XML節點最接近的事情,但是,讓你與混合數據類型,它可能不那麼容易解析的數組。示例:

[ 
    "parent text ", 
    { "text": "child text" }, 
    " more parent text" 
] 

另一種方法是使用一個對象數組,其中每個對象都有一個類型和一個文本。你可以使用一個類型"text"代表純文本和類型"child"代表的子元素:

[ 
    { "type": "text", "text": "parents text " } 
    { "type": "child", "text": "child text" } 
    { "type": "text", "text": " more parent text" } 
] 
+0

謝謝,是的,這是我們有一個選項,但會留下用戶找到的所有文字類型和串聯,只是爲了讓父母的文本值。但是我們仍然是傾向於此選項 – asahun

+0

你覺得保持整個文本在一起的是什麼,並保持在子元素的偏移量。 – asahun

+0

@Fisseha:是的,如果輕鬆獲得父母的全部文本內容是一項優先事項,那將是一種選擇。儘管如此,它不會是人類可讀的。 – Guffa

1

我不認爲有任何清潔的,人類可讀的JSON表示這種方式,但你可以考慮每個節點都作爲子節點的列表。如果它是純文本節點,則將其表示爲一個字符串,否則將其設爲對象。然後

客戶機代碼將必須檢查每個值的類型(如果它是一個串或對象)。

事情是這樣的:

{ 
    "parent": 
     [ 
      "parent text ", 
      { 
       "child": [ 
        "child text" 
       ], 
      } 
      " more parent text" 
     ] 
} 
+0

是的,你是對的,這是我希望看到是否有不同的方法比預期客戶找到所有文本類型和串聯的原因之一。 – asahun

+0

另一個選項只是爲了保持偏移量。 「父」:{ 「文」: 「父文字更父文」, 「孩子」:[{ 「文」: 「子文本」, 「偏移」:13 } ] – asahun