2010-08-06 5 views
5

이 문제를 해결해 주시겠습니까? 나는 asp.net 응용 프로그램을 하나 가지고 있는데, 나는이 목록에서 변환으로 이어지는 데이터 집합을 serialize하기 위해 Javascript serializer를 사용하고있다. 그 코드는 아래와 같습니다.잘못된 Json 프리미티브

하지만 deserialize 할 때 Json 값이 잘못된 잘못된 Json Primitives와 같은 ArguementException이 하나 있습니다. 내 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"}] 

입니다 역 직렬화에 대한 코드는 다음과 같습니다

lstDoc 나는이 같은 예외를 가지고

내 클래스의 타입의 목록 모음입니다

JavaScriptSerializer json = new JavaScriptSerializer(); 
lstDoc = json.Deserialize<List<ACLDocument>>(value); 
return 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" 
    } 
] 

하지만 이 JSON 문자열을 연결할 수 없습니다. 더 이상 JSON 문자열에서 이러한 연결을 수행 한 후 수신 할 내용을 정확하게 말하십시오.

http://www.jsonlint.com/에서 JSON 문자열을 확인하는 것이 좋습니다. 확인하고 "확인"버튼을 클릭해야하는 데이터를 잘라내어 붙여 넣기 만하면됩니다.

3

가 직접 질문에 대답하기.

문자열은 2 요소 배열로 전송됩니다. 포함하는 값이 배열 구조임을 나타내는 문자열 시작 부분에 '['를 잊어 버렸습니다.

문자열 시작 부분에 '['를 삽입하면 오류가 사라집니다.

0

project.json에 // // 주석이 달린 줄이 있는지 확인하십시오. 제거하면 내게 같은 문제가 해결되었습니다.