반응형
NewtonSoft JsonConvert에서 이름에 대시("-")가 있는 속성을 역직렬화하려면 어떻게 해야 합니까?
이름에 대시가 있는 JSON 개체가 있습니다.아래 예
{
"veg": [
{
"id": "3",
"name": "Vegetables",
"count": "25"
},
{
"id": "4",
"name": "Dal",
"count": "2"
},
{
"id": "5",
"name": "Rice",
"count": "8"
},
{
"id": "7",
"name": "Breads",
"count": "6"
},
{
"id": "9",
"name": "Meals",
"count": "3"
},
{
"id": "46",
"name": "Extras",
"count": "10"
}
],
"non-veg": [
{
"id": "25",
"name": "Starters",
"count": "9"
},
{
"id": "30",
"name": "Gravies",
"count": "13"
},
{
"id": "50",
"name": "Rice",
"count": "4"
}
]
}
이 json을 어떻게 역직렬화합니까?
NewtonSoft를 사용하여 이 작업을 수행하는 방법에 대한 질문에 답하려면 JsonProperty 속성 플래그를 사용합니다.
[JsonProperty(PropertyName="non-veg")]
public string nonVeg { get; set; }
DataContractJsonSerializer를 사용하면 이 작업을 수행할 수 있습니다.
[DataContract]
public class Item
{
[DataMember(Name = "id")]
public int Id { get; set; }
[DataMember(Name = "name")]
public string Name { get; set; }
[DataMember(Name = "count")]
public int Count { get; set; }
}
[DataContract]
public class ItemCollection
{
[DataMember(Name = "veg")]
public IEnumerable<Item> Vegetables { get; set; }
[DataMember(Name = "non-veg")]
public IEnumerable<Item> NonVegetables { get; set; }
}
다음과 같은 방법으로 역직렬화할 수 있습니다.
string data;
// fill the json in data variable
ItemCollection collection;
using (MemoryStream ms = new MemoryStream(Encoding.Unicode.GetBytes(data)))
{
DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(ItemCollection));
collection = (ItemCollection)serializer.ReadObject(ms);
}
사용할 수 있습니다.JObject.Parse(뉴턴소프트의 경우) 특수 문자가 있더라도 속성을 잡을 수 있습니다.
JObject result = JObject.Parse(json);
Console.WriteLine(result["non-veg"][0]["name"].ToString());
언급URL : https://stackoverflow.com/questions/14753113/how-to-deserialize-a-property-with-a-dash-in-its-name-with-newtonsoft-jso
반응형
'codememo' 카테고리의 다른 글
| WordPress Customizer에서 특정 범주에 대한 옵션을 저장할 수 있습니까? (0) | 2023.03.14 |
|---|---|
| 입력 내 ng-model 필터 (0) | 2023.03.14 |
| WP Rest API vs - v2에서 작성자 정보를 얻는 방법 - 작성자 ID? (0) | 2023.03.09 |
| 이미지 및 특집 이미지가 포함된 워드프레스 게시물을 가져오려면 어떻게 해야 합니까? (0) | 2023.03.09 |
| 인수 'fn'이 함수 get 문자열이 아닙니다. (0) | 2023.03.09 |