C#通过ID访问JSON内容
本文关键字:JSON 内容 访问 ID 通过 | 更新日期: 2023-09-27 18:24:54
所以我需要解析C#项目中的JSON字符串。我从方法调用中获得JSON作为响应,JSON看起来像这样:
{
"10": {
"entity_id": "10",
"attribute_set_id": "4",
"type_id": "simple",
"sku": "convertor-touchscreen",
"name": "Convertor touchscreen",
"meta_title": null,
"meta_description": null,
"url_key": "convertor-touchscreen",
"custom_design": null,
"page_layout": null,
"options_container": "container1",
"country_of_manufacture": null,
"msrp_enabled": "2",
"msrp_display_actual_price_type": "4",
"gift_message_available": null,
"creareseo_discontinued": null,
"creareseo_discontinued_product": null,
"description": "Convertor touchscreen",
"short_description": "Convertor touchscreen",
"meta_keyword": null,
"custom_layout_update": null,
"price": "421.0000",
"special_price": "380.0000",
"weight": "0.1500",
"msrp": null,
"special_from_date": "2015-11-24 00:00:00",
"special_to_date": "2015-11-26 00:00:00",
"news_from_date": null,
"news_to_date": null,
"custom_design_from": null,
"custom_design_to": null,
"status": "1",
"visibility": "4",
"tax_class_id": "2",
"featured": "1"
}
}
所以我需要访问像"entity_id"、"name"之类的成员。。。所以我尝试了
using Newtonsoft.Json.Linq;
...
// output is the above JSON string
var jo = JObject.Parse(output);
var id = jo[0]["entity_id"].ToString();
但显然这不是一个好办法。此外,我无法控制第一部分
{
"10": {
所以我不能做
var id = jo["10"]["entity_id"].ToString();
因为我不知道下一个JSON字符串中的值"10"是什么。那么,我如何通过Id或其他东西来获得元素值呢?
如果您事先不知道10
的值,那么很明显您无法使用此键访问其内容(在您的示例中,这将是访问其他属性的键)。如果这个对象总是有一个顶级属性,那么你的代码就很好了:
var jo = JObject.Parse(output);
var id = jo[0]["entity_id"].ToString();
在尝试访问jo
阵列之前,添加了一些防御检查,以确保其至少具有一个属性
另一方面,如果键位于您所了解的实体的某个属性内,则可以随意循环jo
变量的所有顶级属性,检查子属性中是否存在您所了解键的值,直到找到所需的记录。
所以我自己得出了一个结论:如果JSON只包含一个top 1级别的元素(在我的例子中是"10"),那么我可以访问这个元素中的属性,就像:
var descr = output.description;
var entid = output.entity_id;
... and so on
我仍然不知道如何访问包含多个顶级1元素的JSON。但我会提出一个不同的问题。