2013-09-26 3 views
1

Json 입력을 C# 모델로 변환하는 방법을 알아낼 수 없습니다. 여기 Json을 모델로 serialize

은 JSON의 예입니다 내 컨트롤러가 가져옵니다

public class Mapping 
{ 
    public string Value { get; set; } 
    public string Name { get; set; } 
    public List<Processor> Processors { get; set; } 
} 
: 이것은 내 수업 "매핑"

public JsonResult SendMapping(List<Mapping> MyMappings) 

입니다 : 여기

[{"name":"StartDate", 
    "value":"0", 
    "Processors":[[{"processor":{"ProcessorName":"searchAndReplace","ProcessorParameters":[{"ParameterName":"toto"},{"ParameterName":"taa"}]}}, 
        {"processor":{"ProcessorName":"searchAndReplace","ProcessorParameters":[{"ParameterName":"toto"},{"ParameterName":"tuuut"}]}}]]}, 
    {"name":"EndDate","value":"1","Processors":[[]]}, 
    {"name":"Country","value":"2","Processors":[[]]}] 

내 컨트롤러의 서명입니다

내 "프로세서 모델"

public enum ProcessorNames { SearchAndReplace } 

public class ProcessorModel 
{ 
    public Processor processor; 
} 

public class Processor 
{ 
    public ProcessorNames ProcessorName; 
    public List<Parameter> ProcessorParameters; 
} 

public class Parameter 
{ 
    public List<string> ParameterName; 
} 

지금까지 모든 이름은값은입니다. 또한 첫 번째 ProcessorName 아니라 매개 변수 않으며, 다른 ProcessorNames

답변

3

JSON에서 클래스 변환으로 고생 할 때 유용한 도구입니다.

http://json2csharp.com/

이 시간을 이길 매우 유용합니다. 왜냐하면 과거에는 JSON 비 직렬화 디버깅에 많은 시간을 소비했기 때문입니다.

+0

My Json이 잘못되어 도구가 나를 이해하는데 도움이되었다. Thx –

1

난 당신이 ProcessorModel 필요하다고 생각하지 않습니다를 검색 할 수 있습니다. 당신은 클래스를 매핑하고

는 포함되어 있어야합니다

public List<Processor> Processors { get; set; } 

대신

public List<ProcessorModel> Processors { get; set; } 
+0

다소 도움이되지만 그다지 도움이되지 않습니다. 사실, 제가 제공 한 코드로는 첫 번째 ProcessorName을 읽을 수 없었습니다. 당신의 변화로 나는 다시 할 수 있었지만 나머지 데이터는 얻을 수 없었다. –

1

{"ParameterName":"toto"} 문자열로 당신의 JSON (문자열)에서와 POCO에 정의되어 당신이 public List<string> ParameterName;로이 JSON 문자열은 {"ParameterName":["toto"]}이어야합니다.

1

JSON이 옳다고 생각하지 않습니다.

이 있어야한다

[{ 
"name": "StartDate", 
"value": "0", 
"Processors": [{ 
    "processor": {"ProcessorName": "searchAndReplace", 
    "ProcessorParameters": [{ 
      "ParameterName": "toto" 
     }, 
     { 
      "ParameterName": "taa" 
     }]},   
    "processor": {"ProcessorName": "searchAndReplace", 
    "ProcessorParameters": [{ 
      "ParameterName": "toto" 
     }, 
     { 
      "ParameterName": "taa" 
     }]}, 
}, 
{ 
    "processor": {"ProcessorName": "searchAndReplace", 
    "ProcessorParameters": [{ 
      "ParameterName": "toto" 
     }, 
     { 
      "ParameterName": "taa" 
     }]},   
    "processor": {"ProcessorName": "searchAndReplace", 
    "ProcessorParameters": [{ 
      "ParameterName": "toto" 
     }, 
     { 
      "ParameterName": "taa" 
     }]}, 
}] 

}]

+0

당신이 옳았다. 이것은 잘 만들어지지 않은 나의 Json이다. 귀하의 답변을 수정하고 수락했습니다. –

1

당신의 JSON에서 소문자와 대문자 특성 이름과 관련된 몇 가지 문제가 날 것으로 보인다. 속성/키 이름은 클래스에 정의 된 것과 동일해야합니다. 그것을 수정하고 아래 클래스를 사용하여 Serialize 또는 desalinize하십시오.

관련 문제