我正在使用 VS2013 和 .NET FrameWork 4.0 。
我正在构建一个读取json文件并对其进行操作的应用程序。
我已成功编写代码以反序列化json文件,并且我有一个列表(String),我想在一个字符串中加入。
这是我的代码:
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim g As GameData = Nothing
Using fileStream = New System.IO.FileStream("C:\Users\KE-KL\Desktop\Levels\level_0017.json", System.IO.FileMode.Open)
fileStream.Position = 0
Dim ser = New System.Runtime.Serialization.Json.DataContractJsonSerializer(GetType(GameData))
g = DirectCast(ser.ReadObject(fileStream), GameData)
End Using
Dim final As String
final = String.Join(",", g.board.tiles.ToArray)
End Sub
但是这一行:final = String.Join(",", g.board.tiles.ToArray)
会产生此错误:
错误1重载解析失败,因为没有可访问的“Join”对这些参数最具体: 'Public Shared Function Join(Of System.Collections.Generic.List(Of String))(separator As String,values As System.Collections.Generic.IEnumerable(Of System.Collections.Generic.List(Of String)))As String ':不是最具体的。 '公共共享函数Join(separator As String,ParamArray values()As Object)As String':不是最具体的
知道怎么解决这个问题吗? 如果您需要更多详细信息,请询问。 提前谢谢
答案 0 :(得分:2)
正如您的错误消息所示:您尝试将List(Of String)
数组传递给对象数组
尝试@Michinarius建议使用Aggregate
方法:
final = g.board.tiles.Aggregate(Of StringBuilder)(New StringBuilder(), _
Function(temp, val)
temp.Append(String.Join(",", val))
Return temp
End Function).ToString()
答案 1 :(得分:1)
您的问题是List(Of List(Of String))
将转换为ToArray()
调用的多维数组,String.Join
无法处理。由于您有一个列表列表,您可以执行String.Join(",", g.board.titles(0))
,这应该可以。
另请注意,我不需要ToArray()
调用,因为其中一个覆盖覆盖采用IEnumerable(Of T)
List(Of T)
实现。
答案 2 :(得分:0)
我认为这是因为您尝试加入String
(","
)和数组(g.board.tiles.ToArray
)。 Join
方法不接受String
和Array
参数。选择其中一个,并记住在处理数组的特定部分时包含一个索引(或多维数组的多个索引)。