Azure Logic应用程序中的JSON对象 [英] JSON Object in Azure Logic Apps
本文介绍了Azure Logic应用程序中的JSON对象的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
请帮帮忙。
我们收到不同格式的订单,并转换为JSON进行处理并转换到我们的API。
请参见示例:
[
{
"Order Number": "10188",
"Order Date": "05/06/2021",
"SKU": "LW80S",
"Quantity": "3"
},
{
"Order Number": "10187",
"Order Date": "05/06/2021",
"SKU": "LW90L",
"Quantity": "1"
},
{
"Order Number": "10187",
"Order Date": "05/06/2021",
"SKU": "LW80S",
"Quantity": "1"
},
{
"Order Number": "10187",
"Order Date": "05/06/2021",
"SKU": "CCDW12",
"Quantity": "1"
},
{
"Order Number": "10187",
"Order Date": "05/06/2021",
"SKU": "CSS",
"Quantity": "1"
}
]
如您所见,同一订单&10187&q;的多行转换已创建多个对象。
因此,我需要将上面的输出转换为以下内容:
"Order": {
"OrderNumber": "10187",
"TotalUnits": "4",
"OrderLine": [
{
"OrderedQty": "1",
"Product": "LW90L",
},
{
"OrderedQty": "1",
"Product": "LW80S",
},
{
"OrderedQty": "1",
"Product": "CCDW12",
},
{
"OrderedQty": "1",
"Product": "CSS",
}
]
}
因此按订单号分组。你能告诉我怎样才能做到吗?
推荐答案
首先构造一个Dictionary<string, List<OrderItem>>
作为查找来存储关键字为Order Number
的分组,然后执行该操作只是迭代并将其映射到所需的原始形状。
这是一个有效的.NET fiddle
。
using System;
using System.Collections.Generic;
using System.Linq;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
public class Order
{
[JsonProperty("Order Number")]
public string OrderNumber { get; set; }
[JsonProperty("Order Date")]
public string OrderDate { get; set; }
[JsonProperty("SKU")]
public string SKU { get; set; }
[JsonProperty("Quantity")]
public string Quantity { get; set; }
}
public class OrderBase
{
public OrderItem Order { get; set; }
}
public class OrderItem
{
public string OrderNumber { get; set; }
public string TotalUnits { get; set; }
public IEnumerable<OrderLine> OrderLines { get; set; }
}
public class OrderLine
{
public string OrderedQty { get; set; }
public string Product { get; set; }
}
public class Program
{
public static void Main(string[] args)
{
string input = @"[{""Order Number"":""10188"",""Order Date"":""05/06/2021"",""SKU"":""LW80S"",""Quantity"":""3""},{""Order Number"":""10187"",""Order Date"":""05/06/2021"",""SKU"":""LW90L"",""Quantity"":""1""},{""Order Number"":""10187"",""Order Date"":""05/06/2021"",""SKU"":""LW80S"",""Quantity"":""1""},{""Order Number"":""10187"",""Order Date"":""05/06/2021"",""SKU"":""CCDW12"",""Quantity"":""1""},{""Order Number"":""10187"",""Order Date"":""05/06/2021"",""SKU"":""CSS"",""Quantity"":""1""}]";
List<Order> orders = JsonConvert.DeserializeObject<List<Order>>(input);
Dictionary<string, List<OrderLine>> lookup = new Dictionary<string, List<OrderLine>>();
// Group into lookup
foreach (Order item in orders)
{
OrderLine newItem = new OrderLine
{
Product = item.OrderNumber,
OrderedQty = item.Quantity
};
if (!lookup.ContainsKey(item.OrderNumber))
{
lookup[item.OrderNumber] = new List<OrderLine> { newItem };
}
else
{
lookup[item.OrderNumber].Add(newItem);
}
}
// Mapping the groupings to the desired shape in the output
List<OrderBase> results = new List<OrderBase>();
foreach (var kvp in lookup)
{
results.Add(
new OrderBase
{
Order = new OrderItem
{
OrderNumber = kvp.Key,
TotalUnits = kvp.Value.Count.ToString(),
OrderLines = kvp.Value
}
}
);
}
Console.WriteLine("Response - {0}", JsonConvert.SerializeObject(results, Formatting.Indented));
}
}
这篇关于Azure Logic应用程序中的JSON对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文