내 json을 역 직렬화하는 방법은 다음과 같습니다.
new JavaScriptSerializer().Deserialize<Dictionary<int, MyModel>>(myData);
수업은 다음과 같습니다.
public class MyModel
{
public Dictionary<int, ItemModel> Translation { get; set; }
public int Id { get; set; }
}
public class ItemModel
{
public string Name { get; set; }
public string ShortDescription { get; set; }
public string LongDescription { get; set; }
}
그리고 여기에 json이 있습니다.
"[[],[],{"Translation":{"1":{"Name":"Bla1","ShortDescription":"bla1","LongDescription":"bla1"},"2":{"Name":"BlaUS1","ShortDescription":"BlaUS1","LongDescription":"BlaUS1"}},"Id":"12"},{"Translation":{"1":{"Name":"Bla22","ShortDescription":"bla22","LongDescription":"bla22"},"2":{"Name":"Bla2US2","ShortDescription":"Bla2US2","LongDescription":"Bla2US2"}},"Id":"13"}]"
배열의 역 직렬화에 대해 유형이 지원되지 않는다는 오류가 발생합니다.
내 오류는 어디에 있습니까?
우선 JSON이 나에게 약간 잘못 보입니다. 그것은 4 요소의 배열과 첫 번째 두 요소는 빈 배열이지만 다른 두 개체입니까? JSON이 다음과 같아야한다고 생각합니다.
"[{"번역 ": {"1 ": {"이름 ":"Bla1 ","ShortDescription ":"bla1 ","LongDescription ":"bla1 "},"2 ": {"이름 ":"BlaUS1 " , "ShortDescription": "BlaUS1", "LongDescription": "BlaUS1"}}, "Id": "12"}, { "번역": { "1": { "이름": "Bla22", "ShortDescription" : "bla22", "LongDescription": "bla22"}, "2": { "Name": "Bla2US2", "ShortDescription": "Bla2US2", "LongDescription": "Bla2US2"}}, "Id": " 13 "}]"
또 다른 문제는 가지고 Dictionary<int, ItemModel>
있지만 직렬화 / 역 직렬화의 경우 키 String
또는 Object
유형 이 있어야한다는 것 입니다.
예를 들어 작업 (당신이 변경 것을 제공 Dictionary<int, ItemModel>
에 Dictionary<object, ItemModel>)
:
string input = "[{\"Translation\":{\"1\":{\"Name\":\"Bla1\",\"ShortDescription\":\"bla1\",\"LongDescription\":\"bla1\"},\"2\":{\"Name\":\"BlaUS1\",\"ShortDescription\":\"BlaUS1\",\"LongDescription\":\"BlaUS1\"}},\"Id\":\"12\"},{\"Translation\":{\"1\":{\"Name\":\"Bla22\",\"ShortDescription\":\"bla22\",\"LongDescription\":\"bla22\"},\"2\":{\"Name\":\"Bla2US2\",\"ShortDescription\":\"Bla2US2\",\"LongDescription\":\"Bla2US2\"}},\"Id\":\"13\"}]";
List<MyModel> myModels = new JavaScriptSerializer().Deserialize<List<MyModel>>(input);
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다