2010-08-06 11 views
5

Możesz mi pomóc w rozwiązaniu tego problemu. Mam jedną aplikację asp.net, w tym używam serializatora JavaScript do serializacji zbioru danych, a następnie konwersji do listy. Ten kod pokazano poniżej.Nieprawidłowe programiści Json

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

Ale w momencie deserializacji mam jeden ArguementException jak Wózki JSON prymitywów z moim wartości JSON. Moja wartość json jest

[{"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"}] 

Kod dla deserializacji jest:

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

gdzie lstDoc jest lista Kolekcja rodzaju mojej klasie

mam wyjątek takiego:

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"}]. 

Proszę mi pomóc w rozwiązaniu tego problemu. Z góry dziękuję

Odpowiedz

4

Twój łańcuch wejściowy jest naprawdę błędny łańcuch JSON. Ci wejście składać się z dwóch prawidłowych ciągów 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" 
    } 
] 

i

[ 
    { 
     "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" 
    } 
] 

ale nie można złączyć dwa ciągi JSON. Aby dokładnie powiedzieć, co otrzymasz po takim konkatenacji w nie więcej łańcuchu JSON.

Polecam zweryfikować ciągi JSON w http://www.jsonlint.com/. Wystarczy wyciąć i wkleić dane, które należy zweryfikować, i kliknąć przycisk "Zatwierdź".

3

Aby odpowiedzieć na pytanie bezpośrednio, ponieważ wszyscy myślą, że jest to forum Microsoft i nie odpowiadając bezpośrednio.

Ciąg jest wysyłany jako tablica 2-elementowa. Zapomniałeś "[" na początku łańcucha, co oznacza, że ​​wartości zawierające to struktura tablicowa.

Wstaw "[" na początku napisu, a błąd powinien zniknąć.

0

Sprawdź, czy masz jakiekolwiek // lub komentowane linie project.json Usuwanie to ma rozwiązać ten sam problem dla mnie

Powiązane problemy