将JSON值写入SQL数据库

时间:2016-09-14 13:47:05

标签: c# .net json uwp

我有像这样的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中的每个订单执行此操作。

我怎么能这样做?

3 个答案:

答案 0 :(得分:2)

Your 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列表并通过它循环。

答案 1 :(得分:1)

@Plutonix答案是对的。但我想展示另一种处理方式。

Newtonsoft Json是一个流行的Json Parser,可以实现这个目标。这是一个非常有用的包。从链接安装此软件包。

所以如果你的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;
    }
}

注意:我在您的评论中提到的pastebin网址中使用了RootObject

答案 2 :(得分:0)

使用Json.net将JSON反序列化为IEnumerable。使用循环遍历反序列化的集合并为每个集合执行查询。