JSON이 있습니다
{{ "action": "rma", "devices": "[95001105,30013103,300117]", "devandreason": [ { "device": 95001105, "reason": 100 }, { "device": 30013103, "reason": 300 }, { "device": 300117, "reason": 200 } ]}}
나는 devandreason
배열 로 얻으려고합니다 . 나는 수업을 만들어 보았습니다.
public class DevReasonList
{
public List<DevReason> devandreason { get; set; }
}
public class DevReason
{
public Double device { get; set; }
public Double reason { get; set; }
}
및 json_serializer
:
JavaScriptSerializer json_serializer = new JavaScriptSerializer();
DevReasonList deviceAndReasonList = json_serializer.Deserialize<DevReasonList>(json.devandreason);
하지만 예외가 발생합니다.
json_serializer.Deserialize<DevReasonList>(json.devandreason) 'json_serializer.Deserialize<DevReasonList>(json.devandreason)' threw an exception of type 'Microsoft.CSharp.RuntimeBinder.RuntimeBinderException' dynamic {Microsoft.CSharp.RuntimeBinder.RuntimeBinderException}
하지만 내가 뭘 잘못하고 있는지 모르겠어요 :(
역 직렬화 devandreason
하고 배열로 만들 수 있습니까?
다음에 따라 모델이되어야합니다.
public class Devandreason
{
public int device { get; set; }
public int reason { get; set; }
}
public class RootObject
{
public string action { get; set; }
public string devices { get; set; }
public List<Devandreason> devandreason { get; set; }
}
시작 {및 후행}을 제거했으며 이제 유효성을 검사합니다.
{ "action": "rma", "devices": "[95001105,30013103,300117]", "devandreason": [ { "device": 95001105, "reason": 100 }, { "device": 30013103, "reason": 300 }, { "device": 300117, "reason": 200 } ]}
보너스 : http://json2csharp.com/
편집 : @Sven이 주석에서 제기 한대로 : RootObject는 장치 유형이 목록이면 탐색하기가 훨씬 쉬울 것입니다.
필요한 json은 다음과 같습니다. 값 앞에 따옴표를 제거했습니다.
{ "action": "rma", "devices": [95001105,30013103,300117], "devandreason": [ { "device": 95001105, "reason": 100 }, { "device": 30013103, "reason": 300 }, { "device": 300117, "reason": 200 } ]}
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다