【发布时间】:2020-11-20 06:04:01
【问题描述】:
我正在使用 C# 中的 JavaScriptSerializer 反序列化 json 字符串,并尝试解析 json 字符串并将其映射到 sql server 表中的适当列以插入数据。我有如下示例 json 字符串。
JSON
{
"event": [
[
{
"Id": 456895,
"Name": "Chelsea - Arsenal",
"BetOffers": [
{
"BetType": "Game",
"Picks": [
{
"Pick": "1",
"Odds": 1.15
},
{
"Pick": "x",
"Odds": 1.46
},
{
"Pick": "2",
"Odds": 1.15
}
]
}
]
}
],
[
{
"Id": 456879,
"Name": "Liverpool - Manchester United",
"BetOffers": [
{
"BetType": "Game",
"Picks": [
{
"Pick": "1",
"Odds": 1.20
},
{
"Pick": "x",
"Odds": 1.42
},
{
"Pick": "2",
"Odds": 1.85
}
]
}
]
}
]
]
}
基于 json 输出字符串,我正在用 C# 编写我的类,如下所示。
类
public class Event
{
public int Id { get; set; }
public string Name { get; set; }
public List<BetOffer> BetOffers { get; set; }
}
public class BetOffer
{
public string BetType { get; set; }
public List<BetPick> Picks { get; set; }
}
public class BetPick
{
public string Pick { get; set; }
public double Odds { get; set; }
}
public class MyRootObject
{
public List<List<BetPick>> @event { get; set; }
}
var root = new JavaScriptSerializer().Deserialize<MyRootObject>(jsonString);
如下向表中插入数据。
string connectionString = "Database ConnectionString";
DataTable dt = new DataTable();
dt.Columns.Add(new DataColumn("ID", typeof(string)));
dt.Columns.Add(new DataColumn("Name", typeof(string)));
dt.Columns.Add(new DataColumn("BetType", typeof(string)));
dt.Columns.Add(new DataColumn("Pick", typeof(string)));
dt.Columns.Add(new DataColumn("Odds", typeof(string)));
DataRow dr = dt.NewRow();
for (var i = 0; i < root.event.Count; i++)
{
dr = dt.NewRow();
dr["ID"] = root.event[i].Id;//stuck at table to json string parse and map
dt.Rows.Add(dr);
}
问题
我不知道如何解析 json 字符串并将数据映射到表中的适当列,以便将数据插入到 sql 表中。无法从 json 字符串中找到 root.event.Id?
错误
列表不包含 Id 的定义
【问题讨论】:
-
为什么我们又使用
JavaScriptSerializer?虽然可能不是这里的问题。我建议使用 Json.Net 或 Text.Json -
@TheGeneral,我有使用 Newtonsoft Json 的限制。
-
我建议澄清这个问题。标题特别说明了反序列化,但问题中有数据库内容。那么什么是不工作,需要成为问题。
-
即使使用 JavaScript 阅读它并将其保存为您喜欢的格式也可能会更容易......获得关于这样一段旧代码的免费建议可能很难......
-
@ErikPhilips,当我尝试从 json 字符串解析 Id (root.event.Id) 时,我得到错误列表不包含 Id 的定义。
标签: c# json javascriptserializer