JSON.net将两个列表(OfJObject)组合在一起



嘿,我正在尝试组合2个JObject列表。我有一个名为masterJsonList.Add(jsonWriter.Token)master JsonListNA.Add(jsonWriter.Token).的2列表(属于JObject)

在搜索谷歌时,我没有找到任何东西向我展示如何将JObectsmasterJsonListNA组合到master JsonList

当我尝试时:

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值,而不是同时得到masterJson List&masterJsonListNA

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

再次使用Union没有错误,但我也再次只获得finalJson中的masterJsonList值,而不是同时获得masterJson List&masterJsonListNA

我知道如果我这样做它是有效的:

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

但我想知道这是否是正确的方式?

是。你最后的猜测是正确的。扩展方法ConcatUnion等不会对调用它们的对象进行操作,而是返回包含操作结果的新对象。实际上,我们不需要combinedListAs子句,让编译器来推断它,就像这样:

Dim combinedJsons = masterJsonList.Concat(masterJsonListNA)

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

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

另一方面,List<T>.Add()方法对其调用的实例有效,但它添加了T类型的对象,而不是T类型的整个列表。

相关内容

  • 没有找到相关文章

最新更新