如何反序列化作为数组对象的json?使用Newtonsoft xamarin

时间:2017-07-25 19:53:28

标签: c# json xamarin deserialization

我正在使用Xamarin表单和Newtonsoft来反序列化

它不起作用:

var itens = JsonConvert.DeserializeObject<List<Model.Loja>>(json);

这是我的JSON:

{
  "one": {
    "two": [
      {
        "cod": 142,
        "nome": "name",
        "phone": "23423",
        "endereco": "address",
        "cidade": "city"
      },
      {
        "cod": 142,
        "nome": "name",
        "phone": "23423",
        "endereco": "address",
        "cidade": "city"
      }
    ]
  }
}

3 个答案:

答案 0 :(得分:1)

您的模型需要与您的JSON结构相匹配。尝试使用这些类:

public class RootObject
{
    public One one { get; set; }
}

public class One
{
    public List<Loja> two { get; set; }
}

public class Loja
{
    public int cod { get; set; }
    public string nome { get; set; }
    public string phone { get; set; }
    public string endereco { get; set; }
    public string cidade { get; set; }
}

然后像这样反序列化:

List<Loja> items = JsonConvert.DeserializeObject<RootObject>(json).one.two;

答案 1 :(得分:0)

您可以为该json创建特定的模型类,尝试使用http://json2csharp.com/

然后你可以使用newtonsoft解析它。

如果您使用的是json2chsarp,那么您的特定类将调用RootObject,但您可以重命名它以匹配您的模型。

var obj = JsonConvert.DeserializeObject<YourSpecificClass>(json);

答案 2 :(得分:0)

问题是“[]”。 我用了

np.place(x, lambda y: b if y > a else 0)

并解决了它。