我有像这样的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中的每个订单执行此操作。
我怎么能这样做?
答案 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。使用循环遍历反序列化的集合并为每个集合执行查询。