簡體   English   中英

使用Json.NET在Windows Phone 7中反序列化JSON

[英]Deserializing JSON in Windows Phone 7 with Json.NET

我知道有無數的問題。 我讀了很多,但很少理解。 你能幫助澄清WP7中反序列化JSON的過程嗎?

我有JSON看起來像這樣:

{ 
    "status" : {
        "code" : 99 ,
        "message" : "Already checked in" 
    },

    "response" : {
        "token" : "faisdufhdaisuflasdkf",
        "distance" : 20,
        "angle" : 45
    }   
}

我正在嘗試使用Json.NET,但這是我的理解幾乎沒有的地方。

 var deserializedJSON = JsonConvert.DeserializeObject<Dictionary<string, <TYPE> >>(JsonString);

對於<TYPE> ,如何最好地定義我期望的反序列化對象? 狀態和響應作為單獨的類? 或者只是一個通用的全封裝ServerResponse類?

另外,我怎么知道這個序列化器會將正確的輸出分配給正確的類成員變量? 如果我有

class Status {
    string code;
    string message;
}

我怎么知道這些將被正確分配?

謝謝。 如果這似乎微不足道,請道歉。 這是我在C#,Silverlight,Windows Phone 7和/或.NET中的第一個項目

{ 
    "status" : {
        "code" : 99 ,
        "message" : "Already checked in" 
    },

    "response" : {
        "token" : "faisdufhdaisuflasdkf",
        "distance" : 20,
        "angle" : 45
    }   
}

翻譯成

public class item {
    public status status { get; set; }
    public response response { get; set; }
}
public class status {
    public int code { get; set; }
    public string message { get; set; }
}
public class response {
    public string token { get; set; }
    public int distance { get; set; }
    public int angle { get; set; }
}

但在這種情況下,項目是匿名的(仍然有效)

然后像這樣使用它:

var deserializedJSON = JsonConvert.DeserializeObject<item>(JsonString);

你有一個狀態anad響應的包裝器,所以你需要以某種方式表示的包裝類,如果你想采取簡單的路徑。 如果你不想自動反序列化,你可以控制並避免使用包裝器,但我不明白為什么這對你想做的事情來說是一個更好的選擇。 換句話說,我正在確認drachenstern的答案,我也投了贊成票。 :-)

暫無
暫無

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

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