У меня возвращается большой объект, и мне нужна только часть данных. Я смотрел на пример здесь . По сути, я хочу сделать то же самое, но проблема в том, что у меня будет массив объектов "error".
Итак, это будет выглядеть так
{
"short": {
"original": "http://www.foo.com/",
"short": "krehqk",
"error": [
{
"code": 0,
"msg": "No action taken"
},
{
"code": 0,
"msg": "No action taken"
}
]
}
}
Есть ли простой способ сделать это с помощью JObject.Parse или, может быть, даже Linq to 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.List'
Чего мне не хватает?
Вот что я придумала ... Мне просто не нравится, потому что реальный объект, с которым я работаю, намного больше, и есть несколько свойств с объектами массива. Это мой единственный вариант ??? (Помимо очевидного JsonConvert. Дезериализация)
[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);
}