2010-08-06 512 views
5

你能幫我解決這個問題嗎?我有一個asp.net應用程序,在這裏我使用JavaScript序列化器序列化數據集,然後轉換爲列表。該代碼如下所示。無效的Json基元

JavaScriptSerializer json = new JavaScriptSerializer(); 
strJson = json.Serialize(aclDoc); 

但是,在反序列化時,我得到了一個ArguementException,像我的Json值無效的Json基元。我的JSON值

[{"Id":"F79BA508-F208-4C37-9904-DBB1DEDE67DB","App_Id":"ScriptFlow","Name":"New form","FriendlyName":"","Read":"Revoke","ReadRule":"a353776f-cbdc-48b7-a15b-4a2316d19b05","Update":"Grant","UpdateRule":"be30c34e-33ec-4c0a-9f09-4fd483f5f1b9","Create":"Revoke","CreateRule":"898dce4d-4709-45b6-8942-d7efb07cbd86","Delete":"Revoke","DeleteRule":"aa14d435-dec8-4ade-ad9b-830ae5ee15d0"}][{"Id":"1","Doc_Id":"858E013C-5775-4FDF-AA1E-2C84053EE39F","Name":"TextBox1","FriendlyName":"TextBox1","Read":"Grant","ReadRule":"0a2e3c0e-ad8f-4f75-9160-cfd9827ac894","Update":"Grant","UpdateRule":"ecad3cf4-104f-44dc-b815-de039f3a0396"},{"Id":"2","Doc_Id":"858E013C-5775-4FDF-AA1E-2C84053EE39F","Name":"TextBox2","FriendlyName":"TextBox2","Read":"Grant","ReadRule":"81e0e9ef-09f7-4c25-a58e-d5fdfbd4c2ba","Update":"Grant","UpdateRule":"2047f662-c881-413b-a1f9-69f15bf667fc"}] 

的反序列化的代碼是:

JavaScriptSerializer json = new JavaScriptSerializer(); 
lstDoc = json.Deserialize<List<ACLDocument>>(value); 
return lstDoc; 

其中lstDoc的類型是我班的一個列表集合

我得到了這樣的例外:

Invalid JSON primitive: 
{"Id":"1","Doc_Id":"858E013C-5775-4FDF-AA1E-2C84053EE39F","Name":"TextBox1","FriendlyName":"TextBox1","Read":"Grant","ReadRule":"0a2e3c0e-ad8f-4f75-9160-cfd9827ac894","Update":"Grant","UpdateRule":"ecad3cf4-104f-44dc-b815-de039f3a0396"},{"Id":"2","Doc_Id":"858E013C-5775-4FDF-AA1E-2C84053EE39F","Name":"TextBox2","FriendlyName":"TextBox2","Read":"Grant","ReadRule":"81e0e9ef-09f7-4c25-a58e-d5fdfbd4c2ba","Update":"Grant","UpdateRule":"2047f662-c881-413b-a1f9-69f15bf667fc"}]. 

請幫我解決這個問題。在此先感謝

回答

4

您的輸入字符串確實是錯誤 JSON字符串。您輸入兩個正確的JSON字符串包括:

[ 
    { 
     "Id": "F79BA508-F208-4C37-9904-DBB1DEDE67DB", 
     "App_Id": "ScriptFlow", 
     "Name": "New form", 
     "FriendlyName": "", 
     "Read": "Revoke", 
     "ReadRule": "a353776f-cbdc-48b7-a15b-4a2316d19b05", 
     "Update": "Grant", 
     "UpdateRule": "be30c34e-33ec-4c0a-9f09-4fd483f5f1b9", 
     "Create": "Revoke", 
     "CreateRule": "898dce4d-4709-45b6-8942-d7efb07cbd86", 
     "Delete": "Revoke", 
     "DeleteRule": "aa14d435-dec8-4ade-ad9b-830ae5ee15d0" 
    } 
] 

[ 
    { 
     "Id": "1", 
     "Doc_Id": "858E013C-5775-4FDF-AA1E-2C84053EE39F", 
     "Name": "TextBox1", 
     "FriendlyName": "TextBox1", 
     "Read": "Grant", 
     "ReadRule": "0a2e3c0e-ad8f-4f75-9160-cfd9827ac894", 
     "Update": "Grant", 
     "UpdateRule": "ecad3cf4-104f-44dc-b815-de039f3a0396" 
    }, 
    { 
     "Id": "2", 
     "Doc_Id": "858E013C-5775-4FDF-AA1E-2C84053EE39F", 
     "Name": "TextBox2", 
     "FriendlyName": "TextBox2", 
     "Read": "Grant", 
     "ReadRule": "81e0e9ef-09f7-4c25-a58e-d5fdfbd4c2ba", 
     "Update": "Grant", 
     "UpdateRule": "2047f662-c881-413b-a1f9-69f15bf667fc" 
    } 
] 

,但你不能連接 2 JSON字符串。要說明在不多於一個JSON字符串進行連接之後你會收到什麼。

我建議您驗證http://www.jsonlint.com/中的JSON字符串。只需剪切並粘貼您需要驗證的數據,然後單擊「驗證」按鈕即可。

3

要直接回答這個問題,因爲每個人都認爲這是微軟的論壇並沒有直接回答。

該字符串作爲2元素數組發送。你忘記了字符串開頭的'[',它表示包含的值是一個數組結構。

在字符串的開頭插入'[',錯誤應該消失。

0

看看你是否有任何//或註釋行project.json 刪除這個已經解決了我的同樣的問題