2010-08-06 26 views
5

Potrebbe aiutarmi a risolvere questo problema. Ho un'applicazione asp.net, in questo sto usando il serializzatore Javascript per serializzare un set di dati seguito da una conversione alla lista. Quel codice è mostrato sotto.Primitive Json non valide

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

Ma, al momento della deserializzazione ho ottenuto uno ArguementException come non validi JSON Primitives con il mio valore JSON. Il mio valore 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"}] 

Il codice per la deserializzazione è:

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

dove lstDoc è una Collection Elenco di tipo della mia classe

ho avuto l'eccezione in questo modo:

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

Please help me per risolvere questo problema. Grazie in anticipo

risposta

4

La stringa di input è in realtà una stringa JSON errata errata. È in ingresso consistono da due stringhe JSON corrette:

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

e

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

ma non possibile concatenare due stringhe JSON. Per dire esattamente ciò che si riceve dopo tale concatenazione in non più una stringa JSON.

Si consiglia di verificare le stringhe JSON in http://www.jsonlint.com/. Basta tagliare e incollare i dati che è necessario verificare e fare clic sul pulsante "Convalida".

3

Per rispondere alla domanda direttamente, dal momento che tutti pensano che questo è un forum di Microsoft e non rispondere direttamente.

La stringa viene inviata come una matrice di 2 elementi. Hai dimenticato il '[' all'inizio della stringa che denota che i valori di contenimento sono una struttura di array.

Inserire il '[' all'inizio della stringa e l'errore dovrebbe andare via.

0

Vedere se avete // o linee commentate in project.json La rimozione di questo ha risolto lo stesso problema per me