Heyy我试图将 2个JObject列表组合起来。我有 2列表(Of JObject)名为 masterJsonList.Add(jsonWriter.Token)和 masterJsonListNA.Add(jsonWriter.Token)。
我在搜索Google时没有找到任何内容,告诉我如何将JObects masterJsonListNA 与 masterJsonList 结合起来。
当我尝试:
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 中的 masterJsonList 值,而不是 masterJsonList &amp;的 masterJsonListNA
masterJsonList.Union(masterJsonListNA)
Dim finalJson As String = JsonConvert.SerializeObject(masterJsonList, Formatting.Indented)
再次使用联盟没有错误,但我也只能在 finalJson 中获得 masterJsonList 值,而不是 masterJsonList &amp;的 masterJsonListNA
如果我这样做,我知道它有效:
Dim combinedJsons As Object = masterJsonList.Concat(masterJsonListNA)
Dim finalJson As String = JsonConvert.SerializeObject(combinedJsons, Formatting.Indented)
但我想知道这是正确的做法吗?
答案 0 :(得分:1)
是。你的最后猜测是正确的。扩展方法Concat
,Union
等不会对它们被调用的对象进行操作。相反,它们返回包含操作结果的新对象。对As
实际上你不需要我们combinedList
子句 - 让编译器推断它,就像这样:
Dim combinedJsons = masterJsonList.Concat(masterJsonListNA)
但如果您不需要combinedJsons
其他任何内容,您可以Concat
代替SerializeObject
的第一个参数列表:
Dim finalJson = JsonConvert.SerializeObject(masterJsonList.Concat(masterJsonListNA), Formatting.Indented)
另一方面,List<T>.Add()
方法对调用它的实例起作用,但是它添加了T
类型的对象,而不是类型T
的整个列表。