2010-08-06 25 views
5

¿Podría ayudarme a resolver este problema? Tengo una aplicación asp.net, en esto estoy usando el serializador de Javascript para serializar un conjunto de datos seguido de la conversión a la lista. Ese código se muestra a continuación.Primitivas Json no válidas

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

Pero, en el momento de deserializar Tengo uno ArguementException como no válidos Json Primitives con mi valor JSON. Mi valor JSON es

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

El código para deserializar es:

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

donde lstDoc es una colección de lista de tipo de mi clase

llegué a excepción de esta manera:

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

Por favor, me ayuda a resolver este problema. Gracias de antemano

Respuesta

4

Su cadena de entrada es realmente una cadena errónea JSON. Usted entrada de establecerlo constan de dos cadenas JSON correctas:

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

y

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

pero no puede concatenar dos cadenas JSON. Para decir exactamente lo que recibes después de tal concatenación en no más una cadena JSON.

Le recomiendo que verifique las cadenas JSON en http://www.jsonlint.com/. Simplemente corte y pegue los datos que necesita verificar y haga clic en el botón "Validar".

3

Para responder a la pregunta directamente, ya que todo el mundo piensa que este es un foro de Microsoft y no responder directamente.

La cadena se envía como una matriz de 2 elementos. Olvidó el '[' en el comienzo de la cadena que denota que los valores que contienen son una estructura de matriz.

Inserta el '[' al principio de la cadena y el error debería desaparecer.

0

Vea si tiene // o líneas comentadas en project.json Eliminar esto ha resuelto el mismo problema para mí

Cuestiones relacionadas