将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值写入SQL数据库

您的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。使用循环遍历反序列化的集合,并对每个集合执行查询。