我有一個大的對象回來,我只需要一小部分數據。我正在看例子here。我基本上想要做同樣的事情,除了問題是我會有一個「錯誤」對象的數組。JSON數組對象到.NET對象
因此,它看起來像這樣
{
"short": {
"original": "http://www.foo.com/",
"short": "krehqk",
"error": [
{
"code": 0,
"msg": "No action taken"
},
{
"code": 0,
"msg": "No action taken"
}
]
}
}
有一種簡單的方式來完成這項使用JObject.Parse或者甚至LINQ到JSON?我最好只使用JsonConvert.DeserializeObject,而不包括我創建的.NET對象中不需要的屬性/對象?
UPDATE 使用上述這裏的JSON是我的測試...
[TestMethod]
public void ParseStuffTest()
{
JObject json = JObject.Parse(shortJson);
Shortie shortie = new Shortie
{
Original = (string)json["short"]["original"],
Short = (string)json["short"]["short"],
Error = new ShortError
{
Code = (int)json["short"]["error"]["code"],
ErrorMessage = (string)json["short"]["error"]["msg"]
}
};
Assert.IsNotNull(shortie);
}
public class Shortie
{
[JsonProperty]
public string Original { get; set; }
[JsonProperty]
public string Short { get; set; }
[JsonProperty]
public List<ShortError> Error{ get; set; }
}
public class ShortError
{
[JsonProperty]
public int Code { get; set; }
[JsonProperty]
public string ErrorMessage { get; set; }
}
以下是錯誤:無法隱式轉換類型 'Unit_Tests.Test.ShortError' 到「System.Collections.Generic。清單」
我缺少什麼?
這就是我想出了......我只是不喜歡它,因爲我的工作的真正目的,就是要大得多,也有與數組對象多個屬性。這是我唯一的選擇嗎? (除了明顯的JsonConvert.Deserialize)
[TestMethod]
public void ParseStuffTest()
{
JObject json = JObject.Parse(shortJson);
var errors = json["short"]["error"].Children().ToList();
var shortErrors = new List<ShortError>();
foreach (var error in errors)
{
var shortError = new ShortError
{
Code = (int)error["code"],
ErrorMessage = (string)error["msg"]
};
shortErrors.Add(shortError);
}
var shortie = new Shortie
{
Original = (string)json["short"]["original"],
Short = (string)json["short"]["short"],
Error = shortErrors
};
Assert.IsNotNull(shortie);
Assert.AreEqual(2, shortie.Error.Count);
}