如何将字符串列表转换为vb.net中的单个列表?

时间:2014-07-04 15:21:17

标签: json vb.net list

我正在使用 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':不是最具体的

知道怎么解决这个问题吗? 如果您需要更多详细信息,请询问。 提前谢谢

3 个答案:

答案 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方法不接受StringArray参数。选择其中一个,并记住在处理数组的特定部分时包含一个索引(或多维数组的多个索引)。