2012-05-20 44 views
0

我是很新的JS,已在C/C++之前, 我需要的C以下結構JSON的C結構,以JSON

struct tmp_t{ 
int a; 
char c_str[1024]; 
}; 

struct tmp2_t{ 
int a2; 
. 
. 
char c2_str[1024]; 
}; 

struct my { 
int number; 
struct tmp_t tmp[100]; 
struct tmp2_t tmp2[100][1000]; 
}; 

等效爲一個JSON像

var myJSON = { 
"number":0, 
. 
. 
}; 
一直在努力

我需要訪問它像

myJSON.tmp[0].a = 10; 
myJSON.tmp2[0][1].c2_str = "hello world" 

任何輸入是高度讚賞

+2

這還不怎麼這個網站的工作。嘗試一下,我們將幫助解決您的問題。但現在這只是「給我codez」。 –

+0

我不明白這是如何與JSON相關的。我建議你閱讀[MDN - 使用對象(https://developer.mozilla.org/en/JavaScript/Guide/Working_with_Objects)。 –

回答

0

JavaScript屬性不鍵入像他們在C所以沒有純粹以JavaScript「等效」的表達。您不會像C代碼那樣預先聲明類型化的數據結構。我給變量或JavaScript中的屬性可以分配任何值或引用 - 沒有很難打字。因此,如果沒有隻包含特定類型的變量(如C),則不會像C中包含的那樣預先聲明數據結構定義。

相反,您只需聲明要在活動對象上使用的屬性或如果你打算使用它們中的很多,你可以創建一個你可以在需要時實例化的原型。

活對象實例有點像你的最後結構的直接聲明是這樣的:

var my = { 
    number: 10, 
    tmp: new Array(100), 
    tmp2: new Array(100) 
}; 

這將宣佈名爲my一個對象,有三個屬性稱爲numbertmptmp2number初始包含數10和其他兩個屬性包含長度爲100誰是值分別爲undefined的陣列。我不知道任何緊湊的方式來預定義JavaScript中的二維數組,而無需在循環中運行代碼來初始化它。

該數據確定指標將讓您訪問my.numbermy.tmp等。

如果你希望你的數組包含自己,那麼你需要填充的對象這些陣列屬性的對象。

var my = { 
    number: 10, 
    tmp: [{a: 1, c_str: "foo"}, {a: 2, c_str: "whatever"}], 
    tmp2: new Array(100) 
}; 

或者,在代碼中,你可以在項目的TMP陣列代碼添加這樣的:

var my = { 
    number: 10, 
    tmp: [], 
    tmp2: [] 
}; 

my.tmp.push({a: 1, c_str: "foo"}); 
my.tmp.push({a: 2, c_str: "whatever"}); 

或者,您可以單獨創建對象,然後把它在數組中:

var obj = {};  // new empty object 
obj.a = 1;   // assign property 
obj.c_str = "foo"; // assign property 
my.tmp.push(obj); // put object into the array 
obj = {};   // new empty bject 
obj.a = 2; 
obj.c_str = "whatever"; 
my.tmp.push(obj); 

或者,你可以每個屬性單獨分配是這樣的:

my.tmp.push({});   // put empty object into the array 
my.tmp[0].a = 1;   // assign property to the object 
my.tmp[0].c_str = "foo"; // assign property to the object 
my.tmp.push({}); 
my.tmp[1].a = 2; 
my.tmp[1].c_str = "whatever"; 

在這兩種情況下,你可以再訪問這些數據是這樣的:

console.log(my.tmp[0].a);  // 1 
console.log(my.tmp[0].c_str); // "foo" 
+0

@ jfriend00感謝,如果我聲明一個JSON的OBJ'變種myJSON = { 「數量」:0, 「TMP」:[], 「TMP2」:[] };' 我需要通過'訪問它myJSON.tmp [0] .a = 10; myJSON.tmp2 [0] [1] .c2_str = 「世界你好」;' –

+0

@Jay,這是在javascript非常基本的對象語法。我建議閱讀如何在javascript中聲明對象和屬性。我現在正在外出,目前無法再寫更多內容。 – jfriend00

+0

@ jfriend00試過了,用JSON didn'tworked說: 「不能設置屬性 'A' 的未定義」 –