【问题标题】:JSON.Net error readingJSON.Net 错误读取
【发布时间】:2013-09-08 20:18:43
【问题描述】:

我正在尝试使用 Json.Net 解析一些 JSON 数据。这是我的数据:

[
    {
        "UIDClan": "1",
        "UIDKnjiga": "1",
        "Naslov": "Title1",
        "DatumZaKada": "2013-08-09 00:00:00",
        "DatumIstekRez": null,
        "Spremno": "0"
    },
    {
        "UIDClan": "1",
        "UIDKnjiga": "2",
        "Naslov": "Title2",
        "DatumZaKada": "2013-08-08 00:00:00",
        "DatumIstekRez": null,
        "Spremno": "0"
    },
    {
        "UIDClan": "1",
        "UIDKnjiga": "3",
        "Naslov": "Title3",
        "DatumZaKada": "2013-08-09 00:00:00",
        "DatumIstekRez": "2013-10-09 00:00:00",
        "Spremno": "1"
    }
]

通过这段代码我想提取 UIDClan 数据:

 JObject o = JObject.Parse(s);

 Console.WriteLine(o["UIDClan"]);

错误是

从 JsonReader 读取 JObject 时出错。当前 JsonReader 项不是对象:StartArray。路径'',第 1 行,位置 1。

我已经用 JSONLint 进行了检查,它是有效的。

我找到的示例不是以 [.

开头的

我做错了吗?

【问题讨论】:

    标签: json.net


    【解决方案1】:

    您可以尝试使用JArray。 这个 JSON 数据实际上是一个数组。

    JArray v = JArray.Parse(s);
    

    获取第一个项目。

    var firstItem = v[0]["UIDClan"].ToString();
    

    你甚至可以使用 linq

    var items = v.Where(x =>  x["UIDClan"].ToString() == "1").ToList();
    

    【讨论】:

    • 非常感谢!就是这个。干杯!
    • 如果我的对象只是一个字符串怎么办? JObject.parse 因同样的原因而失败,不幸的是,对我来说,没有 JString.parse...
    • 刚刚回答了我自己的问题。 JRaw.Parse 似乎可以使用字符串
    • 如何在我的 Web 服务 json 响应中获取所有索引?我的意思是我不想让索引为 0 的项目。我想让整个 json 列表响应我的列表怎么做?我的代码是 here
    【解决方案2】:

    为了克服错误请序列化以下格式的jsonstring。这个序列化字符串我们可以解析为Jobject

    Newtonsoft.Json.JsonConvert.SerializeObject(new {JsonString})
    

    【讨论】:

      猜你喜欢
      • 2012-11-29
      • 1970-01-01
      • 2012-11-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多