【问题标题】:How Can I deserialize a json that is an object with an array? using Newtonsoft xamarin如何反序列化作为带有数组的对象的 json?使用 Newtonsoft xamarin
【发布时间】:2017-07-25 19:53:27
【问题描述】:

我正在使用 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"
      }
    ]
  }
}

【问题讨论】:

  • 显示Model.Loja的代码。
  • “one”是一个包含“two”的对象,它是一个数组。你应该有有趣的模型
  • 大声笑......这是一个例子......但我用子字符串解决了它:D谢谢你们

标签: c# json xamarin deserialization


【解决方案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;

【讨论】:

    【解决方案2】:

    你可以为那个json制作一个特定的模型类,尝试使用http://json2csharp.com/

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

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

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

    【讨论】:

      【解决方案3】:

      问题是“[]”。 我用过

      response = json.Substring(json.IndexOf('['));
      response = json.Substring(0, json.LastIndexOf(']') + 1);
      

      并解决了。

      【讨论】:

        猜你喜欢
        • 2013-02-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-04-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多