我想将数据库数据转换为JSON,但是使用JavaScriptSerializer使用此站点中的代码得到的结果是这样的
[{"Yes":6,"No":1,"Maybe":4}].
我的数据库表有三列,名为Yes
,No
和Maybe
,但我想要一个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)
答案 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 |
+---------+--------+
你会如何在原始表格中这样做?
您可能已经猜到了:通过更改数据库结构以适应业务模型。