【问题标题】:Dynamically adding key/values as children to a JSON.NET JObject将键/值作为子项动态添加到 JSON.NET JObject
【发布时间】:2016-04-11 21:09:22
【问题描述】:

我目前正在使用这个丑陋的代码将一堆键/值对(保存在字典中)添加到 JObject。它不会将它们添加为子代,而是添加为兄弟姐妹。代码可以正常工作,但如果将它们添加为子节点会更简洁。 (动态对象e,持有JObject)

    public void trigger(dynamic e ,Pairs extras)
    {
        if (Post != null)
        {
            foreach (KeyValuePair<string, object> entry in extras)
            {
                Newtonsoft.Json.Linq.JValue val = new Newtonsoft.Json.Linq.JValue(entry.Value);
                e.Add(entry.Key, val);
            }
            Post(this,  e);
        }
    }

【问题讨论】:

  • 代码有效 - 那么你的问题是什么,你有什么问题呢?
  • 我不希望它插入节点的兄弟节点,而是插入一个子节点。但我在使用 .AddFirst() 时遇到了麻烦
  • 我不希望它插入节点的兄弟节点 - 什么节点,ee.Add(string, JToken) 将指定的属性添加为e 的最后一个孩子,所以我不确定我是否明白你的意思。你能创建一个example 的输入 JSON 以及你想要得到的结果吗?
  • 在下面查看我的答案,我建议采用不同的方法来解决这个问题。

标签: json.net


【解决方案1】:

对于我的特殊需求,(通过使用 JSON.NET 序列化的 SignalR 发送动态对象)。我找到了一个更简单的解决方案。

我的问题是我有一个动态密封类,JSON.NET 正在为其创建 JTOKEN,然后我试图添加更多数据。当我执行 e.Add(string, JTOKEN) 时,它正在创建第二个子树。太丑了。

现在可以在以下位置找到我的解决方案:

can one convert a dynamic object to an ExpandoObject (c#)

【讨论】:

    猜你喜欢
    • 2013-07-16
    • 2018-06-18
    • 1970-01-01
    • 1970-01-01
    • 2021-02-22
    • 2014-05-17
    • 2022-06-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多