2012-07-23 81 views
0

錯誤,我試圖從一個的onSuccess功能反序列化我的結果是新手爲:的Javascript [Object對象]在for循環,同時追加字符串

"onResultHttpService": function (result, properties) { 
    var json_str = Sys.Serialization.JavaScriptSerializer.deserialize(result); 
    var data = []; 
    var categoryField = properties.PodAttributes.categoryField; 
    var valueField = properties.PodAttributes.valueField; 
    for (var i in json_str) {     
     var serie = new Array(json_str[i] + '.' + categoryField, json_str[i] +  '.' + valueField); 
       data.push(serie); 
     } 

的JSON在result看起來是這樣的:

[ 
    { 
     "Text": "INDIRECT GOODS AND SERVICES", 
     "Spend": 577946097.51 
    }, 
    { 
     "Text": "LOGISTICS", 
     "Spend": 242563225.05 
    } 
] 

正如你可以看到我追加for循環的字符串..我這樣做的原因是因爲屬性名稱不斷變化,因此我不能只寫它作爲

var serie = new Array(json_str[i].propName, json_str[i].propValue); 

我需要傳遞數據(數組類型)來綁定高圖柱形圖。但是當我檢查變種系列時,它顯示爲

serie[0] = [object Object].Text 
serie[1] = [object Object].Spend 

爲什麼我沒有得到在數組內部填充的實際內容?

+0

由於您的問題實際上取決於數據你遍歷,它將會很好地向我們展示數據(例如,「結果」是什麼樣的?)。 – 2012-07-23 05:27:56

+0

@TJCrowder,這裏是結果= [{「文字」:「間接商品和服務」,「消費」:577946097.51},{「文字」:「物流」,「消費」:242563225.05}它變成.. var json_str = Sys.Serialization.JavaScriptSerializer.deserialize(result);即json_str = json_str [0] .. json_str [1] – 2012-07-23 05:38:33

+0

要改善您的問題,請使用它下面的「編輯」鏈接。 – 2012-07-23 05:43:13

回答

0

你明白了,因爲json_str[i]是一個對象,這就是將對象強制轉換爲字符串時發生的情況(除非對象以有用的方式實現toString,這顯然不適用)。 您還沒有表現出你反序列化JSON ...

現在你已經張貼的JSON,我們可以看到,它是一個包含兩個對象,各自有一個TextSpend財產的數組。因此在你的循環中,json_str[i].Text將參考Text屬性。如果您想使用categoryField中的名稱檢索該房產,您可以通過json_str[i][categoryField]來完成。

我不知道你想要在serie中得到什麼,但是如果你想要它是一個雙插槽的數組,其中第一個包含category字段的值,第二個數組包含花費的值字段,然後

var serie = [json_str[i][categoryField], json_str[i][valueField]]; 

(有幾乎從來沒有一個理由使用new Array,只需使用數組文本  — [...]   —代替。)

+0

Crowder..Got it buddy..Thank you so much much – 2012-07-23 06:05:05

+0

@AdnanBaliwala:很高興幫助。如果這回答了您的問題,請將其標記爲已接受的答案:http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work – 2012-07-23 06:13:23