簡體   English   中英

創建用於JSON反序列化的類

[英]Creating a class for JSON deserialization

考慮以下JSON:

{
    "Code": 2, 
    "Body": {
        "Dynamic-Key": {
            "Key1": "Val1", 
            "Key2": "Val2"
        }
    }
}

定義以下類結構:

[DataContract]
class JsonResponse
{
    [DataMember]
    public string  Code { get; set; }
    [DataMember]
    public JsonResponseBody Body { get; set; }
}
[DataContract]
class JsonResponseBody
{
    [DataMember(Name = "Dynamic-Key")]
    public DynamicKeyData Data { get; set; }
}
[DataContract]
class DynamicKeyData
{
    [DataMember]
    public string Key1 { get; set; }
    [DataMember]
    public string Key2 { get; set; }
}

我可以使用以下代碼反序列化給定的JSON:

DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(JsonResponse));
JsonResponse responseData = serializer.ReadObject(responseStream) as JsonResponse;

但是在我的情況下, “動態鍵”是未知的,由用戶輸入值定義。 處理這種JSON定義的正確方法是什么?

注意事項:

JSON是第三方Api的,因此無法更改。

就我而言,我不在乎動態鍵名稱,因此,如果有一個選項始終映射到一個通用名稱,它將可以完成工作。

提前致謝。

您肯定需要使用WCF嗎? 否則,我建議您查看Json.NET 有很多擴展機制,例如合同解析器

將JSON存儲在假設在strResult中的字符串中。 然后,可以按如下所示將其反序列化為JsonResponse對象:

JsonConvert是Newtonsoft.Json.JsonConvert dll中的類。 您可以按以下方式使用它:

JsonResponse object= (JsonResponse)JsonConvert.DeserializeObject(strResult,  typeof(JsonResponse));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM