에서 json
을 받았습니다. json 매핑에 대한 클래스 속성 선언이 잘못되었습니다.
{
"items": [{
"delivery-status": {
"message": null,
"code": 605,
"description": "Not delivering to previously bounced address",
"session-seconds": 0
},
"event": "failed",
"log-level": "error",
"recipient": "[email protected]"
},
{
//some other properties of above types
}]
}
는 지금은
deserializing
후 위의
json
속성을 자동 매핑을위한 클래스 구조를 만들려고했다.
public class test
{
public List<Item> items { get; set; }
}
public class Item
{
public string recipient { get; set; }
public string @event { get; set; }
public DeliveryStatus delivery_status { get; set; }
}
public class DeliveryStatus
{
public string description { get; set; }
}
이
내가deserialize
하고 속성을 매핑 할 방법이다.
var resp = client.Execute(request);
var json = new JavaScriptSerializer();
var content = json.Deserialize<Dictionary<string, object>>(resp.Content);
test testContent = (test)json.Deserialize(resp.Content, typeof(test));
var eventType = testContent.items[0][email protected];
var desc = testContent.items[0].delivery_status.description; //stays null
지금 위의 클래스에
Item
,
recipient
및
@event
가 제대로 매핑됩니다과는
keyword
때부터
@
문자를 앞에 사용하는 가정하고 그것을 잘 작동합니다. 그러나
json
의
delivery-status
속성은
class DeliveryStatus
에
delevery_status
속성으로 매핑되지 않습니다. 나는 그것을
deliveryStatus
또는
@deliver-status
으로 만들어 보았습니다. 이전의 on은 다시 맵핑되지 않으며 나중에는 컴파일 타임 예외가 발생합니다. 어쨌든
-
사이에 속성을 선언하는 것과 같이 처리 할 수있는 것이 있습니까? 내 끝에서 생성되지 않기 때문에
response json
을 변경할 수 없습니다. 도움이되기를 바랍니다.
업데이트
는 this answer
을 참조하여 다음과 같이 클래스를 변경하지만, 도움이되지 않았다. 그것의 null
다시.
public class Item
{
public string @event { get; set; }
[JsonProperty(PropertyName = "delivery-status")]
public DeliveryStatus deliveryStatus { get; set; }
}
기본 'JavaScriptSerializer' 옵션 대신'Json.NET' (이것을 처리 할 수 있습니다)을 사용하고 있습니까? –
'DeliveryStatus' 클래스에는 하나가 아닌 몇 가지 속성 만 있습니다. 메시지, 코드, 설명, 세션 초. –
예 @StephenMuecke ..'Json.NET'으로 어떻게 달성 할 수 있는지 알려주세요. –