【问题标题】:Add element to Json within JArray将元素添加到 JArray 中的 Json
【发布时间】:2014-03-27 17:46:15
【问题描述】:

我一直在尝试在满足条件时将元素添加到 JArrays JToken 中。我想要实现的是如下所示。但是,在下面, add 语句不会编译,但会传达我需要尝试和做的事情。有人知道怎么做吗?

        string json = @"[
        {""1"":""One"",""2"":""AddThree""},
        {""1"":""One"",""2"":""Two""},
        {""1"":""One"",""2"":""AddThree""}
        ]";

        JArray rows = JArray.Parse(json);
        int length = rows.Count;
        for (int i = 0; i < length; i++)
        {
            string s = rows[i]["2"].ToString();
            if (s == "AddThree")
            {
                //This functionality doesnt exist
                rows[i].Children().ADD(@"""3"":""Three""");
            }
        }

        Console.WriteLine(rows.ToString());
        Console.ReadKey();

【问题讨论】:

  • 在寒冷的早晨看着这个......我只记得JSON会在设置它时创建一个元素: var row = rows[i];行["3"] = "三";在“if”语句中完成了这项工作,奇怪的行为,但它对我来说已经足够好了。
  • 有趣.. 你的意思是说row["3"] = "Three" 将 Json 字符串添加到 Jarray 行吗?我认为解决方案将使用JArray.Add
  • 直到明天我才能将其标记为答案,但我已经在下面添加了解决方案,是的,row["3"] = "Three""3": "Three" 添加到当前 jarray 项中包含的令牌中
  • 感谢您的更新。

标签: c# .net json linq json.net


【解决方案1】:

如果元素不存在,Json 将在设置时创建该元素。

    string json = @"[
    {""1"":""One"",""2"":""AddThree""},
    {""1"":""One"",""2"":""Two""},
    {""1"":""One"",""2"":""AddThree""}
    ]";

    JArray rows = JArray.Parse(json);
    foreach (var row in rows)
    {
        string s = row["2"].ToString();
        if (s == "AddThree")
        {
            row["3"] = "Three";
        }
    }

    Console.WriteLine(rows.ToString());
    Console.ReadKey();

【讨论】:

    【解决方案2】:

    你能检查一下这是否有效吗?

    rows[i].Children().ADD(@"""3"":""Three"""); 更改为

    rows[i].Children().Add(JToken.Parse(@"""3"":""Three"""));

    【讨论】:

    • 抱歉,Children() 没有 .Add 方法。我之前找到了解决方案。如果您有兴趣,请参阅我上面的评论。
    猜你喜欢
    • 2021-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-02
    • 1970-01-01
    • 2014-04-13
    • 1970-01-01
    • 2021-08-14
    相关资源
    最近更新 更多