2013-05-07 48 views
0

我有一個JSON對象和一個數組如下:如何在JSON中提供指針?

a = [{"id":1,"content":"aaa"},{"id":2,"content":"bbb"}]; 
b = ["a.jpg","b.jpg"]; 

現在,我想創建一個更JSON對象指向此JSON和數組, 喜歡的東西:

c = [{groupId:1, 
     "group":[{"aId":pointer to a json,"bId":pointer to b array 
       },{"aId":pointer to a json,"bId":pointer to b array 
       }] 
    }]; 

是它可能在JavaScript?

+1

你真的在談論JSON(即對象的字符串編碼版本)還是JS對象?在第一種情況下,這是不可能的,在第二種情況下很容易。 – 2013-05-07 06:49:15

+0

它看起來像我有兩個數組。一個數組包含兩個對象,另一個數組包含兩個字符串。 – Barmar 2013-05-07 06:49:59

回答

6

你不能那樣做(在JSON表示法中有指針或引用)。

您可以定義自己的約定,例如(例如),像{"refId": 1} JSON對象表示到您的應用程序有些「指針」與JSON "id":1解碼的事情,但你不得不代碼爲了那個原因。

FWIW,該YAML符號具有引用(與anchorsaliases

+0

我該如何編碼?你能舉一些例子嗎? – SSS 2013-05-07 07:03:43

4

理論上有可能,但只要你發送JSON到不同的機器,該指針將是無效的。

您有2種可能性要解決的問題:

  1. 巢陣列原始JSON

  2. 參考陣列和JSON通過某種ID的JSON。這第二個 方法需要更多的發送和接收方面的工作,但 減少您的json使用的空間量。

1

有一個提議的標準RFC 6901: JavaScript Object Notation (JSON) Pointer,其引入在JSON結構的指針的一個概念。

下面是從RFC截取的示例:

例如,給定的JSON文檔

{ 
    "foo": ["bar", "baz"], 
    "": 0, 
    "a/b": 1, 
    "c%d": 2, 
    "e^f": 3, 
    "g|h": 4, 
    "i\\j": 5, 
    "k\"l": 6, 
    " ": 7, 
    "m~n": 8 } 

以下JSON字符串評估所附值:

""   // the whole document 
"/foo"  ["bar", "baz"] 
"/foo/0"  "bar" 
"/"   0 
"/a~1b"  1 
"/c%d"  2 
"/e^f"  3 
"/g|h"  4 
"/i\\j"  5 
"/k\"l"  6 
"/ "   7 
"/m~0n"  8 

還有一些支持此RFC的軟件包,如json-pointer