将数据库数据转换为JSON

时间:2014-02-14 12:24:02

标签: asp.net json vb.net

我想将数据库数据转换为JSON,但是使用JavaScriptSerializer使用此站点中的代码得到的结果是这样的

[{"Yes":6,"No":1,"Maybe":4}].

我的数据库表有三列,名为YesNoMaybe,但我想要一个JSON格式,如:

[{"name":"Yes","data":6},{"name":"No","data":2},{"name":"Maybe","data":3}].

表示如何在VB中的key:value对中转换它?

我的代码是:

Dim serializer As New System.Web.Script.Serialization.JavaScriptSerializer()
Dim rows As New List(Of Dictionary(Of String, Object))()
Dim row As Dictionary(Of String, Object)
For Each dr As DataRow In dt.Rows
    row = New Dictionary(Of String, Object)()
    For Each col As DataColumn In dt.Columns
        row.Add(col.ColumnName, dr(col))
    Next
    rows.Add(row)
Next
json_data = serializer.Serialize(rows)

2 个答案:

答案 0 :(得分:1)

只需更改为

For Each col As DataColumn In dt.Columns
    row.Add("name", col.ColumnName)
    row.Add("data", dr(col))

答案 1 :(得分:-1)

问题不在代码中。问题是数据库模式开始不好。

为:

+---------+--------+-----------+
| Yes     | No     | Maybe     |
+---------+--------+-----------+
|       6 |      2 |         4 |
+---------+--------+-----------+

好:

+---------+--------+
| Name    | Data   |
+---------+--------+
| Yes     |      6 |
+---------+--------+
| No      |      2 |
+---------+--------+
| Maybe   |      4 |
+---------+--------+

修改

@Downvoter:假设您想稍后添加新属性“或许”。

+---------+--------+
| Name    | Data   |
+---------+--------+
| Yes     |      6 |
+---------+--------+
| No      |      2 |
+---------+--------+
| Maybe   |      4 |
+---------+--------+
| Perhaps |      9 |
+---------+--------+

你会如何在原始表格中这样做?

您可能已经猜到了:通过更改数据库结构以适应业务模型。