Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 通过Linq为Json序列化创建动态对象层次结构_C#_Json_Asp.net Mvc_Linq - Fatal编程技术网

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());
}
}
注意:-我在这里编写的代码可能只包含编译时错误