如何在JSON文件中写入多条记录?

时间:2014-03-05 18:20:28

标签: json.net

我找不到任何地方。我正在使用牛顿JSON控件并尝试遍历我的记录并将每个记录写入一个JSON文件中。以下是我的尝试,但无法做到正确。我得到令牌路径错误和所有种类。我不知道在哪里开始和结束写JSON。

谢谢! 沃伦

        Dim sb As New StringBuilder()
    Dim sw As New StringWriter(sb)
    Using writer As JsonWriter = New JsonTextWriter(sw)
        writer.Formatting = Formatting.Indented
        writer.WriteStartObject()

        Dim ConnString7 As String = "removed"
        Dim SQLConn As New SqlConnection()
        Dim SQLCmd As New SqlCommand()
        SQLCmd.Connection = SQLConn
        SQLConn.ConnectionString = ConnString7
        SQLCmd.CommandType = CommandType.StoredProcedure
        SQLCmd.CommandText = "Sproc_Here"
        SQLConn.Open()
        Dim reader As SqlDataReader
        reader = SQLCmd.ExecuteReader()
        While reader.Read()
            MsgBox("Start")
            writer.WritePropertyName("CardDate")
            writer.WriteValue(reader("CardDate").ToString())
            writer.WritePropertyName("EditDate")
            writer.WriteValue(reader("EditDate").ToString())
            writer.WritePropertyName("Activity")
            writer.WriteValue(reader("Activity").ToString())
            writer.WritePropertyName("Location")
            writer.WriteValue(reader("Location").ToString())
            MsgBox("End")
        End While
        reader.Close()
        SQLConn.Close()

        writer.WriteEnd()
        writer.WriteEndObject()

        MsgBox(sb.ToString)

        Response.Clear()
        Response.ContentType = "application/json; charset=utf-8"
        Response.Write(sb.ToString)
        Response.End()

1 个答案:

答案 0 :(得分:0)

每条记录都将成为一个JSON对象,并且您希望拥有多个记录,因此需要将它们包含在JSON数组中。所以像这样:

    Dim sb As New StringBuilder()
    Dim sw As New StringWriter(sb)
    Using writer As JsonWriter = New JsonTextWriter(sw)

        writer.Formatting = Formatting.Indented

        ' ... code to set up SQLCmd omitted for brevity ...
        Dim reader As SqlDataReader = SQLCmd.ExecuteReader()

        writer.WriteStartArray()

        While reader.Read()
            writer.WriteStartObject()
            writer.WritePropertyName("CardDate")
            writer.WriteValue(reader("CardDate").ToString())
            writer.WritePropertyName("EditDate")
            writer.WriteValue(reader("EditDate").ToString())
            writer.WritePropertyName("Activity")
            writer.WriteValue(reader("Activity").ToString())
            writer.WritePropertyName("Location")
            writer.WriteValue(reader("Location").ToString())
            writer.WriteEndObject()
        End While

        writer.WriteEndArray()

        ' ... code to close connection and write response omitted ...

    End Using