C# 通过Linq为Json序列化创建动态对象层次结构
给定数据库结构:C# 通过Linq为Json序列化创建动态对象层次结构,c#,json,asp.net-mvc,linq,C#,Json,Asp.net Mvc,Linq,给定数据库结构: | Context | Resource | TypeCode | Value | |---------|----------|----------|---------------------| | Home | Header | | Welcome to the site | | Home | Footer | | copyright company | | Error 1 |
| Context | Resource | TypeCode | Value |
|---------|----------|----------|---------------------|
| Home | Header | | Welcome to the site |
| Home | Footer | | copyright company |
| Error 1 | | | Error! |
| UPC | 55 | Name | Product |
| UPC | 55 | Weight | 10 |
我需要能够生成这个Json:
{
"Home": {
"Header": "Welcome to the site",
"Footer": "copyright company"
},
"Error1": "Error!",
"UPC": {
"55": {
"Name": "Product",
"Weight": "10"
}
}
}
我将使用这个来将平移输入到角度平移。值已设置为目标语言的值。我已经看到了这种类型的序列化的各种示例,但它们都假定目标值的深度是一致的。尝试类似的方法
List<List<string>> a = /*parse ur data to this*/;
foreach(var pa in a){
dynamic r = getDynamicObject(pa /*List<string>*/);
string jsonString = Newtonsoft.Json.SerializeObject(r);
/*you might have ur string*/
}
/*separate function*/
GetDynamicObject(IEnumerable<string> a){
dynamic r = new ExpandoObject();
if(a.count > 2){
return (r as Dictionary<string, object>).Add(a.First(), GetDynamicObject(a.Skip(1)));
}
else {
return (r as Dictionary<string, object>).Add(a.First(), a.Last());
}
}
List a=/*将您的数据解析到此*/;
foreach(a中的var pa){
动态r=getDynamicObject(pa/*List*/);
字符串jsonString=Newtonsoft.Json.serializer对象;
/*你可能有你的绳子*/
}
/*分离功能*/
GetDynamicObject(IEnumerable a){
动态r=新的ExpandooObject();
如果(a.计数>2){
return(r作为字典).Add(a.First(),GetDynamicObject(a.Skip(1));
}
否则{
return(r作为字典),Add(a.First(),a.Last());
}
}
注意:-我在这里编写的这段代码可能只包含编译时错误。尝试类似的方法
List<List<string>> a = /*parse ur data to this*/;
foreach(var pa in a){
dynamic r = getDynamicObject(pa /*List<string>*/);
string jsonString = Newtonsoft.Json.SerializeObject(r);
/*you might have ur string*/
}
/*separate function*/
GetDynamicObject(IEnumerable<string> a){
dynamic r = new ExpandoObject();
if(a.count > 2){
return (r as Dictionary<string, object>).Add(a.First(), GetDynamicObject(a.Skip(1)));
}
else {
return (r as Dictionary<string, object>).Add(a.First(), a.Last());
}
}
List a=/*将您的数据解析到此*/;
foreach(a中的var pa){
动态r=getDynamicObject(pa/*List*/);
字符串jsonString=Newtonsoft.Json.serializer对象;
/*你可能有你的绳子*/
}
/*分离功能*/
GetDynamicObject(IEnumerable a){
动态r=新的ExpandooObject();
如果(a.计数>2){
return(r作为字典).Add(a.First(),GetDynamicObject(a.Skip(1));
}
否则{
return(r作为字典),Add(a.First(),a.Last());
}
}
注意:-我在这里编写的代码可能只包含编译时错误