将通用列表转换为json格式 [英] Convert generic list to json format

查看:95
本文介绍了将通用列表转换为json格式的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

嗨大家好,任何人都可以帮我实现这样的输出。我无法像下面那样设置数组头。建议我最好的方法和解决方案样本来源

我的代码:

 var groupedCustomerList = _commonService.GetMultilingualDatas(语言)
.GroupBy(u => u.screen_name)
.Select(grp => grp.ToList())
.ToList();
string output = Newtonsoft.Json.JsonConvert.SerializeObject(groupedCustomerList);





我得到的实际结果:

 [
[
{
multilingual_id:1,
screen_name:splash_screen,
key:care_any_ware,
max_length:0,
value:随时随地,
评论:,
语言:en-gb
}
],
[
{
multilingual_id:2,
screen_name:login_start,
key:log_in ,
max_length:0,
value:登录,
评论:,
语言:en-gb
},
{
multilingual_id:3,
screen_name:login_start,
key:join_today,
max_length :0,
value:今天加入,
评论:,
语言:en-gb
},
{
multilingual_id:4,
screen_name:login_start,
key:take_a_quick_tour,
max_length:0,
value:快速浏览,
评论:,
语言:en-gb
}
],







预期结果:

 {
splash_screen: [
{
key:care_any_ware,
max_length:25,
value:随时随地,
value_en:随时随地,
评论:
}
$,
< big>login_start< / big>:[
{
key:log_in,
max_length:35 ,
值:登录,
value_en:登录,
评论:
},
{
key:join_today,
max_length:35,
value:今天加入,
value_en:今天加入,
评论:
},
{
key:take_a_quick_tour,
max_length:35,
value :快速游览,
value_en :快速游览,
评论:
}
],





我尝试过的事情:



*尝试列表中的属性

* Raju的博客 - 创建N层ASP.NET Web API应用程序 [ ^ ]

如何获取名称到Web API中的Json数组 [ ^ ]

更多stackoverflow链接

解决方案

< blockquote>将数据转换为字典而不是列表:

  var  groupedCustomerList = _commonService.GetMultilingualDatas(language)
.GroupBy(u = > u.screen_name)
.ToDictionary(g = > g.Key);

string output = Newtonsoft.Json.JsonConvert.SerializeObject(groupedCustomerList);



注意:您仍然会在每个项目上使用 screen_name 属性。如果要删除它,可以将组元素投影到匿名类:

 .GroupBy(u = > ;  u.screen_name,u = >   new  
{
u.key,
u.max_length,
u。 value
u.value_en,
u.comments ,
})

(或者只是将 [JsonIgnore] 属性添加到该属性。)

Hi folks, can anyone help me to achieve the output like this. i cant able to set the array header like below. suggest me the best way and solution either sample source
My Code:

    var groupedCustomerList = _commonService.GetMultilingualDatas(language)
.GroupBy(u => u.screen_name)
.Select(grp => grp.ToList())
.ToList();
    string output = Newtonsoft.Json.JsonConvert.SerializeObject(groupedCustomerList);



Actual Result i'm getting:

[
  [
    {
      "multilingual_id": 1,
      "screen_name": "splash_screen",
      "key": "care_any_ware",
      "max_length": 0,
      "value": "Care anywhere",
      "comments": "",
      "language": "en-gb"
    }
  ],
  [
    {
      "multilingual_id": 2,
      "screen_name": "login_start",
      "key": "log_in",
      "max_length": 0,
      "value": "Log in",
      "comments": "",
      "language": "en-gb"
    },
    {
      "multilingual_id": 3,
      "screen_name": "login_start",
      "key": "join_today",
      "max_length": 0,
      "value": "Join today",
      "comments": "",
      "language": "en-gb"
    },
    {
      "multilingual_id": 4,
      "screen_name": "login_start",
      "key": "take_a_quick_tour",
      "max_length": 0,
      "value": "Take a quick tour",
      "comments": "",
      "language": "en-gb"
    }
  ],




Expected Result:

{
  "splash_screen": [
    {
      "key": "care_any_ware",
      "max_length": "25",
      "value": "Care anywhere",
      "value_en": "Care anywhere",
      "comments": ""
    }
  ],
  <big>"login_start"</big>: [
    {
      "key": "log_in",
      "max_length": "35",
      "value": "Log in",
      "value_en": "Log in",
      "comments": ""
    },
    {
      "key": "join_today",
      "max_length": "35",
      "value": "Join today",
      "value_en": "Join today",
      "comments": ""
    },
    {
      "key": "take_a_quick_tour",
      "max_length": "35",
      "value": "Take a quick tour",
      "value_en": "Take a quick tour",
      "comments": ""
    }
  ],



What I have tried:

*Tried with list as property in a class
*Raju's Blog - Creating N-Tier ASP.NET Web API application[^]
How to get a Name to a Json Array in web API[^]
few more stackoverflow links

解决方案

Convert the data to a dictionary instead of a list:

var groupedCustomerList = _commonService.GetMultilingualDatas(language)
    .GroupBy(u => u.screen_name)
    .ToDictionary(g => g.Key);

string output = Newtonsoft.Json.JsonConvert.SerializeObject(groupedCustomerList);


NB: You'll still end up with the screen_name property on each item. If you want to remove that, you can project the group elements to an anonymous class:

.GroupBy(u => u.screen_name, u => new
{
    u.key,
    u.max_length,
    u.value,
    u.value_en,
    u.comments,
})

(Or just add the [JsonIgnore] attribute to that property.)


这篇关于将通用列表转换为json格式的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆