【问题标题】:JSON.net combine 2 list(Of JObject) togetherJSON.net 将 2 个列表(JObject)组合在一起
【发布时间】:2016-06-04 07:12:47
【问题描述】:

嘿,我正在尝试合并 2 个 JObject 列表。我有 2 个列表(Of JObject) 名为 ma​​sterJsonList.Add(jsonWriter.Token)ma​​sterJsonListNA.Add(jsonWriter.Token)。 p>

在 Google 搜索时,我没有找到任何东西告诉我如何将 JObects ma​​sterJsonListNAma​​sterJsonList 结合起来。

当我尝试时:

masterJsonList.Add(masterJsonListNA) '<-- error here
Dim finalJson As String = JsonConvert.SerializeObject(masterJsonList, Formatting.Indented)

它给出了一个错误:

错误 BC30311 类型“List(Of JObject)”的值无法转换为“JObject”。

我什至没有运气也尝试过以下方法:

masterJsonList.Concat(masterJsonListNA)
Dim finalJson As String = JsonConvert.SerializeObject(masterJsonList, Formatting.Indented)

虽然使用 Concat 没有错误,但我只得到 finalJson 中的 ma​​sterJsonList 值,而不是 ma​​sterJsonList > & ma​​sterJsonListNA

masterJsonList.Union(masterJsonListNA)
Dim finalJson As String = JsonConvert.SerializeObject(masterJsonList, Formatting.Indented)

再次使用 Union 没有错误,但我也再次仅在 finalJson 中获得 ma​​sterJsonList 值,而不是同时获得 masterJsonList & ma​​sterJsonListNA

我知道这样做会有效:

Dim combinedJsons As Object = masterJsonList.Concat(masterJsonListNA)
Dim finalJson As String = JsonConvert.SerializeObject(combinedJsons, Formatting.Indented)

但我想知道这是否是这样做的正确方法

【问题讨论】:

    标签: json vb.net json.net


    【解决方案1】:

    是的。你最后的猜测是正确的。扩展方法ConcatUnion 等不会对调用它们的对象进行操作。相反,它们返回包含操作结果的新对象。您实际上不需要我们 As 子句来获取 combinedList - 让编译器来推断它,如下所示:

    Dim combinedJsons = masterJsonList.Concat(masterJsonListNA)
    

    但是,如果您不需要 combinedJsons 做其他任何事情,您可以使用 Concat 列表代替 SerializeObject 的第一个参数:

    Dim finalJson = JsonConvert.SerializeObject(masterJsonList.Concat(masterJsonListNA), Formatting.Indented)
    

    另一方面,List&lt;T&gt;.Add() 方法确实在调用它的实例上工作,但它添加了 T 类型的对象,而不是 T 类型的整个列表。

    【讨论】:

    • @StealthRT:嘿,没问题。很高兴你得到它。我忘了提到您可以使用List&lt;T&gt;.AddRange(IEnumerable&lt;T&gt;) 将您的第二个列表添加到第一个列表中。 AddRange 将改变它被调用的列表以包含添加的列表。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-08
    • 2014-08-04
    • 2017-07-26
    • 2023-02-20
    • 2021-09-19
    相关资源
    最近更新 更多