【问题标题】:Find JArray and add JObject找到 JArray 并添加 JObject
【发布时间】:2017-01-22 12:12:39
【问题描述】:

如何找到一个名为“response”的 JArray 并添加一个 New JObject?

var json = new JObject();
json.Add(new JProperty("response", new JArray()));

using (var reader = dbCommand.ExecuteReader()) {
    while (reader.Read()) {
        json.GetValue("response").AddAfterSelf( // throws exception
            new JObject(
                new JProperty("id", reader.GetString(0)),
                new JProperty("val", reader.GetString(1))
            )
         );
    }
}

【问题讨论】:

    标签: c# json.net


    【解决方案1】:

    首先,始终包含有关您的错误的信息。这有助于您的同行为您提供帮助。

    错误指出“JProperty 不能包含多个值”。

    你需要做的就是更新两行:

    json.Add("response", new JArray());  // simplified
    

    ((JArray)json.GetValue("response")).Add(
    

    将 json.GetValue('response') 强制转换为 JArray 可让您访问其 Add 方法并修复错误。

    最终代码:

    var json = new JObject();
    json.Add("response", new JArray());
    
    using (var reader = dbCommand.ExecuteReader()) {
        while (reader.Read()) {
            ((JArray)json.GetValue("response")).Add( // <- add cast
                new JObject(
                    new JProperty("id", reader.GetString(0)),
                    new JProperty("val", reader.GetString(1))
                )
             );
        }
    }
    

    【讨论】:

    • 谢谢。您的代码有效,但是您所说的不正确(问题出在哪里)。我重新格式化了您的代码并使用了原始的var json = new JObject(new JProperty("response", new JArray()));,它可以工作。我想问题出在演员表上,我不知道把它放在哪里,因为我是 C# 新手,所以 .Add 方法没有显示
    • 用您提供的信息更新了答案。
    猜你喜欢
    • 2019-03-20
    • 1970-01-01
    • 2021-12-18
    • 1970-01-01
    • 1970-01-01
    • 2019-06-30
    • 2021-12-18
    • 2018-06-18
    • 1970-01-01
    相关资源
    最近更新 更多