循环 C#/JSON 子元素
Looping C#/JSON child elements
我想把“order_product”字段(order_id,model)中的这些值放到for或foreach循环中怎么办?
我分享了以下几行作为示例。有很多这样的副线
{
"orders":[
{
"order_product":[
{
"order_product_id":"2189",
"order_id":"1688",
"model":"IT.KZ.1933"
},
{
"order_product_id":"2190",
"order_id":"1688",
"model":"IT.KZ.1830"
}
],
"id":"1688",
"entegration":"Ticimax"
}
]
}
首先,如果您想使用 c# 语言构造,您应该使用一些 json 反序列化器(例如 System.Text.Json.JsonSerializer)将 json 反序列化为 c# 对象。为此,您需要创建一个对应 json 字段的模型。 Microsoft Docs 中描述了这些步骤:https://docs.microsoft.com/en-us/dotnet/standard/serialization/system-text-json-how-to?pivots=dotnet-6-0 .
在您的情况下,您的 C# 模型将包含一个数组或一个订单列表。每个订单将包含一个名为 order_product 的数组。然后,您将能够在该数组或您的 json 反序列化器支持并包含 GetEnumerator() 方法的任何其他数据结构上使用 foreach 循环。
在你的 VS IDE 中,创建一个新的 class,将问题中的 JSON 复制到剪贴板,然后编辑 -> 选择性粘贴 -> Paste JSON as classes
。 VS会自动生成classes。
然后使用 JsonSerializer
您可以反序列化您的 JSON 数据,如下所示,并且可以使用 foreach 迭代 order_product
及其值。
string ordJson = File.ReadAllText(@"C:\myData\orders.json");
OrdersColl myOrders = JsonSerializer.Deserialize<OrdersColl>(ordJson);
foreach (Order myorder in myOrders.orders)
{
foreach( Order_Product order_Prod in myorder.order_product)
{
Console.WriteLine($"Model : {order_Prod.model} , order id :
{order_Prod.order_product_id}");
}
}
以下是VSIDE根据您在问题中给出的JSON生成的classes..
public class OrdersColl
{
public Order[] orders { get; set; }
}
public class Order
{
public Order_Product[] order_product { get; set; }
public string id { get; set; }
public string entegration { get; set; }
}
public class Order_Product
{
public string order_product_id { get; set; }
public string order_id { get; set; }
public string model { get; set; }
}
我想把“order_product”字段(order_id,model)中的这些值放到for或foreach循环中怎么办?
我分享了以下几行作为示例。有很多这样的副线
{
"orders":[
{
"order_product":[
{
"order_product_id":"2189",
"order_id":"1688",
"model":"IT.KZ.1933"
},
{
"order_product_id":"2190",
"order_id":"1688",
"model":"IT.KZ.1830"
}
],
"id":"1688",
"entegration":"Ticimax"
}
]
}
首先,如果您想使用 c# 语言构造,您应该使用一些 json 反序列化器(例如 System.Text.Json.JsonSerializer)将 json 反序列化为 c# 对象。为此,您需要创建一个对应 json 字段的模型。 Microsoft Docs 中描述了这些步骤:https://docs.microsoft.com/en-us/dotnet/standard/serialization/system-text-json-how-to?pivots=dotnet-6-0 .
在您的情况下,您的 C# 模型将包含一个数组或一个订单列表。每个订单将包含一个名为 order_product 的数组。然后,您将能够在该数组或您的 json 反序列化器支持并包含 GetEnumerator() 方法的任何其他数据结构上使用 foreach 循环。
在你的 VS IDE 中,创建一个新的 class,将问题中的 JSON 复制到剪贴板,然后编辑 -> 选择性粘贴 -> Paste JSON as classes
。 VS会自动生成classes。
然后使用 JsonSerializer
您可以反序列化您的 JSON 数据,如下所示,并且可以使用 foreach 迭代 order_product
及其值。
string ordJson = File.ReadAllText(@"C:\myData\orders.json");
OrdersColl myOrders = JsonSerializer.Deserialize<OrdersColl>(ordJson);
foreach (Order myorder in myOrders.orders)
{
foreach( Order_Product order_Prod in myorder.order_product)
{
Console.WriteLine($"Model : {order_Prod.model} , order id :
{order_Prod.order_product_id}");
}
}
以下是VSIDE根据您在问题中给出的JSON生成的classes..
public class OrdersColl
{
public Order[] orders { get; set; }
}
public class Order
{
public Order_Product[] order_product { get; set; }
public string id { get; set; }
public string entegration { get; set; }
}
public class Order_Product
{
public string order_product_id { get; set; }
public string order_id { get; set; }
public string model { get; set; }
}