将JSON值写入SQL数据库
本文关键字:SQL 数据库 JSON | 更新日期: 2023-09-27 18:07:03
我有这样的JSON
"id": 823,
"parent_id": 0,
"status": "on-hold",
"order_key": "wc_order_562b39a2050f2",
"currency": "USD",
"version": "2.4.7",
"prices_include_tax": false,
"date_created": "2015-10-24T07:56:18",
"date_modified": "2015-10-24T07:56:18",
"customer_id": 0,
"discount_total": 0.00,
"discount_tax": 0.00,
"shipping_total": 0.00,
"shipping_tax": 0.00,
"cart_tax": 0.00,
"total": 76.98,
"total_tax": 0.00,
我这样解析它'
RestAPI rest = new RestAPI("*******", "*******", "*********");
WCObject wc = new WCObject(rest);
//Get all products
var orders = await wc.GetOrders(new Dictionary<string, string>() {
{ "per_page", "100" }});
string products = orders.ToFormattedJsonString();`
我需要以"total"
字段为例,并将其写入数据库中的字段。
对于数据库写入,我有以下代码MySqlCommand addCommand = new MySqlCommand("INSERT INTO demotable (salary,surname) VALUES (1234,'Luk')", connection);
addCommand.ExecuteNonQuery();
但是我可以有很多订单。我需要对JSON中的每个订单都这样做。
我该怎么做?
您的JSON是一个数组,所以如果您只想从每个项目中获取一条信息,您可以将其放入JArray
中以获取您想要的信息。这比反序列化到一个你不需要也不打算使用的类要简单:
string jstr = ... from whereever ...
// get into array
var jobj = JArray.Parse(jstr);
for (int n = 0; n < jobj.Count - 1; n++)
{
// save to a List or update DB
Console.WriteLine(jobj[n]["email"]);
}
部分结果:anastasiya.yenina@gmail.com
bakhnovska@gmail.com
cosporet@haribu.com
如果您需要大量的片段,您可能需要将其反序列化为T的数组或列表,并循环通过该数组或列表
@Plutonix答案正确。但是我想展示另一种处理方法
Newtonsoft Json是一个流行的Json解析器,可以实现这一点。这是一个非常有用的软件包。从链接安装这个包。
如果json字符串是string products = orders.ToFormattedJsonString();
你的代码将是
List<RootObject> rootObjectData = JsonConvert.DeserializeObject<List<RootObject>>(products);
现在可以像下面这样循环遍历项。
foreach(RootObject root in rootObjectData)
{
foreach(Class1 c in root.Property1)
{
int id = c.id;
}
}
注意:我在这里使用RootObject
来自您在评论中提到的pastebin URL。
使用Json.net
将JSON反序列化为IEnumerable。使用循环遍历反序列化的集合,并对每个集合执行查询。