1
我有一個包含類似值的字符串堆棧:從堆棧創建JSON
catalog
catalog
,type
catalog
,type
,offer
catalog
,type
,active
我希望得到一個JSON結構,如:
{ catalog:
{ type:
{
offer: '',
active: ''
}
},
}
我嘗試這樣的:
private static string BuildJsonStringFromStack(Stack<string> stack)
{
if (stack.Count == 1)
{
return $"{{{stack.Pop()}: {{}}}}";
}
var json = new StringBuilder("{");
var depth = stack.Count;
while (stack.Any())
{
if (stack.Count == 1)
{
json.Append($"{stack.Pop()}: ''");
json.Append(new String('}', depth));
}
else
{
json.Append($"{stack.Pop()}: {{");
}
}
return json.ToString();
}
這會給我喜歡的字符串:
{ catalog:
{ type:
{
offer: ''
}
}
}
{ catalog:
{ type:
{
active: ''
}
}
}
然而,當我試圖合併字符串到JObject
,我不會同時得到offer
和active
作爲childre n的type
- 最後一個處理將覆蓋另一個。
var jObject = JObject.Parse(BuildJsonStringFromStack(stack));
requestJson.Merge(jObject, new JsonMergeSettings
{
MergeArrayHandling = MergeArrayHandling.Merge
});
有關如何獲得我想要的合併的任何想法?
您可以創建在C#中的對象,它反映了數據的層次結構(如POCO)填充它類似於你的問題中的邏輯,然後將其轉換爲json。 – wahwahwah
您可以使用ExpandoObjects重新結構(鑄造動態),然後將其序列化 – Gusman
@Gusman良好的通話,我已經添加了一個答案與我的工作第一關。 –