Newtonsoft Json.NET으로 JSON 조각을 구문 분석하고 싶습니다.
JSON :
[{
"type": "switchStatus",
"Data" :[
{
"ID" : "1",
"value" : "2.5"
},
{
"ID" : "2",
"value" : "4.2"
}
],
"Datetime": "2014-12-01",
"customerID": "50"
}]
클래스:
public class Account
{
[JsonProperty("type")]
public string Type { get; set; }
public List<Data> Data { get; set; }
[JsonProperty("Datetime")]
public string DateTime { get; set; }
[JsonProperty("customerID")]
public string CustomerId { get; set; }
}//Account
public class Data
{
[JsonProperty("ID")]
public string Id { get; set; }
[JsonProperty("value")]
public string Value { get; set; }
}
파싱 :
Account account = JsonConvert.DeserializeObject<Account>(message);
오류 :
올바른 역 직렬화를 위해 JSON 개체 (예 : { "name": "value"})가 필요하기 때문에 현재 JSON 배열 (예 : [1,2,3])을 'JSonParser.Account'형식으로 역 직렬화 할 수 없습니다.
이 오류를 수정하려면 JSON을 JSON 개체 (예 : { "name": "value"})로 변경하거나 deserialized 형식을 배열 또는 List와 같은 컬렉션 인터페이스 (예 : ICollection, IList)를 구현하는 형식으로 변경합니다. JSON 배열에서 역 직렬화됩니다. JsonArrayAttribute를 유형에 추가하여 JSON 배열에서 강제로 역 직렬화 할 수도 있습니다.
경로 '', 줄 1, 위치 1
문제는 JSON이 선언 된 클래스와 일치하지 않는다는 것입니다. 특히, 귀하의 Data
속성은 List<string>
복잡한 객체 가 아닙니다 .
수업은 다음과 같아야합니다.
public class Data
{
[JsonProperty("ID")]
public int Id { get; set; }
[JsonProperty("value")]
public double Value { get; set; }
}
public class Account
{
[JsonProperty("type")]
public string Type { get; set; }
public List<Data> Data { get; set; }
[JsonProperty("Datetime")]
public string DateTime { get; set; }
[JsonProperty("customerID")]
public int CustomerId { get; set; }
}
편집하다:
JSON을 편집 했으므로 이제 List<Account>
하나가 아니라 하나 가 필요하다는 것이 분명 합니다. 역 직렬화 할 때 다음이 필요합니다.
List<Account> accounts = JsonConvert.DeserializeObject<List<Account>>(message);
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다