2011-11-22 91 views
1

我的問題: 我正在寫一個web應用程序來管理聯繫人。在服務器端,我正在使用Razor語法(C#),並且正在向我的服務器發送ajax請求,並將json編碼的字符串作爲標頭。 test.cshtml收到如下:問題解析數組到json

var j = Json.Decode(Request["json"]); 

現在我可以使用所有的對象完全罰款。但!我有一個數組在json編碼的字符串,如...,"persons":[1,2,3],... Json.Decode將它解碼爲一個數組,我可以使用它將數據寫入我的數據庫。這樣做了以後,我想更新的對象發送回客戶端(數組未被改變或進行任何其他與)使用:

<text> 
    @Html.Raw(Json.Encode(j)); 
    @j.persons.Length; 
</text> 

相關人員元素是...,"persons":{},...的輸出,但人的長度應該是3。我究竟做錯了什麼?是否有參數來告訴Json.Encode來編碼子對象和數組?

感謝您的支持

PS:@ j.persons.Length只是證明數組不爲空的和現有的

回答

1

我發現了這個問題。我有一個循環,以強類型自動生成的數組(從Json.Decode):

int[] temp = new int[j.persons.Length]; 
for(var i = 0;i < j.persons.Length;i++){ 
    temp[i] = (j.persons[i] is string)?Int32.Parse(j.persons[i]):(int)j.persons[i]; 
} 
j.persons = temp; 

感謝您的做法約瑟夫的回答

0

,因爲它是唯一編碼的根源,沒有人嘗試j.as_json(:include => :persons)

+0

謝謝,但似乎沒有工作。這不是C++嗎?我正在使用C#...有沒有相當於它? – phippu

+0

對不起,我在那裏越過了我的語言。 j的結構是什麼? –

+0

我可以訪問j.id,j.name,j.color,j.persons。 json字符串看起來像{「id」:0,「name」:「family」,「color」:「000000」,「persons」:[1,2,3]}。感謝您的幫助 – phippu