我有一个嵌套的动态JSON模板文档,我需要对其进行反序列化并将其插入值以制成其中包含值的JSON内容。 我有一个适用于非嵌套JSON的工作逻辑,但是我不确定如何使该逻辑(递归或其他一些更简单的方法)适用于嵌套文档。
示例JSON模板
{
"LoanDate": [
"Test"
],"borrowerdetail": [
{
"borrowid": [
"Test"
],"Name": [
"Test"
],"Type": [
"Test"
],"Status": [
"Test"
]
}
],"loans": [
{
"bibdetails": [
{
"id": [
"Test"
],"title": [
"Test"
],"author": [
"Test","Test"
]
}
],"Collection": [
"Test"
],"ItemType": [
"Test"
],"ItemNo": [
"Test"
]
}
],"LoansItemBib": [
"Test"
],"LoansItem": [
"Test"
]
}
当前逻辑
JavaScriptSerializer _objSolrDeserialized = new JavaScriptSerializer();
SolrResultTemp = "{";
dynamic SolrTempObject = _objSolrDeserialized.Deserialize<dynamic>(SolrResultTemp);
string Serialized = _objSolrDeserialized.Serialize(SolrTempObject);
int _iParentCount = 0;
foreach (var ObjSolr in SolrTempObject)
{
var Type = ObjSolr.Value.GetType();
if (Type.Name == "String")
{
string Value = ObjSolr.Value.Replace("$","").Replace("^","");
List<string> ResString = ReturnConciseValEntry(Value,null,db2,FullTextPath,null);
if (ResString.Count > 0)
{
foreach (var Res in ResString)
{
if (_iParentCount > 0)
SolrResultTemp = SolrResultTemp + ",";
SolrResultTemp = SolrResultTemp + "\"" + ObjSolr.Key + "\": \"" + Res + "\"";
_iParentCount += 1;
}
}
}
if (Type.Name == "Object[]")
{
string Key = ObjSolr.Key;
List<string> _lstvalue = new List<string>();
foreach (var x in ObjSolr.Value)
{
string Value = x.Replace("$","");
List<string> ResString = ReturnConciseValEntry(Value,null);
if (ResString.Count > 0)
_lstvalue.AddRange(ResString);
}
if (_lstvalue.Count > 0)
{
if (_iParentCount > 0)
SolrResultTemp = SolrResultTemp + ",";
SolrResultTemp = SolrResultTemp + "\"" + ObjSolr.Key + "\" : [ \"" + string.Join("\",\"",_lstvalue) + "\" ]";
_iParentCount += 1;
}
}
}
SolrResultTemp = SolrResultTemp + "}";