[英]Parsing JSON to JSON in Liquid Template using for loop. How to iterate through lists in JSON using Liquid Template?
[英]Transform json using liquid template for dynamic tags
我必須在邏輯應用程序中使用 Liquid 模板轉換 json。 問題是收到文件時不知道 Json 屬性名稱(例如 DynamicTag1、DynamicTag2)。 標簽名稱可以是在生成文件之前未知的任何名稱。 如何使用 Liquid 轉換此 Json 文件?
這是輸入文件:
{
"fields": {
"DynamicTag1": {
"type": "string",
"valueString": "SR12345678",
"text": "SR12345678",
"page": 1,
"confidence": 0.995
},
"DynamicTag2": {
"type": "string",
"valueString": "BR123456",
"text": "BR123456",
"page": 1,
"confidence": 0.995
},
"SomeOtherDynamicTag3": {
"type": "string",
"valueString": "QR567TY",
"text": "QR567TY",
"page": 1,
"confidence": 0.995
}
}
}
這是預期的 output:
{
"fields": [
{
"FieldName": "DynamicTag1",
"type": "string",
"valueString": "SR12345678",
"text": "SR12345678",
"page": 1,
"confidence": 0.995
},
{
"FieldName": "DynamicTag2",
"type": "string",
"valueString": "BR123456",
"text": "BR123456",
"page": 1,
"confidence": 0.995
},
{
"FieldName": "SomeOtherDynamicTag3",
"type": "string",
"valueString": "QR567TY",
"text": "QR567TY",
"page": 1,
"confidence": 0.995
}
]
}
如果您樂於避免使用 Liquid 方法(不是說您應該),那么您可以創建一個 Azure Function 將您的 JSON 轉換為您需要的。
創建一個名為TransformJson
的新 function,然后在您的邏輯應用程序中引用它。 這是代碼...
#r "Newtonsoft.Json"
using System;
using System.IO;
using System.Net;
using System.Text;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Primitives;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
public static async Task<IActionResult> Run(HttpRequest req, ILogger log)
{
string requestBody = String.Empty;
using (StreamReader streamReader = new StreamReader(req.Body))
{
requestBody = await streamReader.ReadToEndAsync();
}
var jsonObject = JObject.Parse(requestBody);
var stringBuilder = new StringBuilder();
var stringWriter = new StringWriter(stringBuilder);
using (JsonWriter jsonWriter = new JsonTextWriter(stringWriter))
{
jsonWriter.Formatting = Newtonsoft.Json.Formatting.None;
jsonWriter.WriteStartObject();
jsonWriter.WritePropertyName("fields");
jsonWriter.WriteStartArray();
// Retrieve the first object and process each object below.
foreach (JObject subObject in jsonObject.First.Children())
{
foreach (JProperty dynamicObject in subObject.Children())
{
jsonWriter.WriteStartObject();
jsonWriter.WritePropertyName("fieldName");
jsonWriter.WriteValue(dynamicObject.Name);
foreach (JProperty property in dynamicObject.First.Children())
{
jsonWriter.WritePropertyName(property.Name);
jsonWriter.WriteValue(property.Value);
}
jsonWriter.WriteEndObject();
}
}
jsonWriter.WriteEnd();
jsonWriter.WriteEndObject();
}
return new ContentResult()
{
Content = stringBuilder.ToString(),
ContentType = "application/json"
};
}
..然后參考它,我得到了想要的結果。
這是一個選擇。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.