编写了以下代码
var content = @ " {
""
data "": {
""
id "": 1000000,
""
firstName "": ""
John "",
""
lastName "": ""
Doe "",
""departments"": [2245],
""employeeGroups"": [],
""
custom_186549 "": {
""
name "": ""
Pension_overenskomst "",
""
type "": ""
Boolean "",
""
value "": false
},
""
custom_186550 "": {
""
name "": ""
Pension 1. arbejdsdag "",
""
type "": ""
Boolean "",
""
value "": false
}
}
}
";
JObject names = JObject.Parse(content);
IEnumerable < JToken > CustomColumnsFirst = names.SelectTokens("$.data");
foreach(JToken item in CustomColumnsFirst) {
Console.WriteLine(item);
}
IEnumerable < JToken > CustomColumnsNames = names.SelectTokens("$.data.*.name");
IEnumerable < JToken > CustomColumnValues = names.SelectTokens("$.data.*.value");
我被困在这里,设法将名称和值放入 JToken“数组”中,但有点需要一种组合 CustomColumnNames 和 CustomColumnValues 的方法,然后还将它们附加回主数据上。 “风俗”的内容虽然不同,但风俗名称本身有所不同。不过,客户内部值的顺序也是随机的
我对 C# 编码还很陌生,所以还不了解很多基础知识。
我需要返回具有这种格式的 json 字符串,而无需输入“自定义”列名称,因为该名称可能会根据 API 返回的内容而有所不同:
{
"data":{
"id":1000000,
"firstName":"John",
"lastName":"Doe",
"departments": [2245],
"employeeGroups": []
"Pension_overenskomst":false,
"Pension 1. arbejdsdag":false
}
}
最佳答案
试试这个
var data = ((JObject)JObject.Parse(content)["data"]);
JObject items = new JObject();
foreach (var item in data.Properties())
if ( item.Name.Contains("custom"))
//or, thanks to iSR5
if ( item.Name.StartsWith("custom"))
if (item.Name.StartsWith("custom"))
{
if ((string)item.Value["type"] == "Boolean")
items.Add((string)item.Value["name"], item.Value["value"]);
else if ((string)item.Value["type"] == "Text") items.Add("name", item.Value["value"]);
}
else
items.Add(item.Name, item.Value););
JObject newData = new JObject();
newData.Add("data", items);
content = newData.ToString();
//or
content = newData.ToString(Newtonsoft.Json.Formatting.None);
新内容 json
{
"data": {
"id ": 1000000,
"firstName ": "John",
"lastName ": "Doe",
"departments": [
2245
],
"employeeGroups": [],
"Pension_overenskomst": false,
"Pension 1.arbejdsdag": false,
"name": "John Doe"
}
}
关于c# - 具有自定义动态列的 JSON 字符串。在 C# 中追加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71362631/