【问题标题】:convert list object to json in c#在c#中将列表对象转换为json
【发布时间】:2017-06-02 23:35:44
【问题描述】:

我有一个如下所示的对象模型:

public class Myclass
{
    public int Id { get; set; }
    public string  name { get; set; }
    public int age { get; set; }
}

public ContentResult GetList(List<Myclass> model)
{

    var list = JsonConvert.SerializeObject(
        model,
        Formatting.Indented,
        new JsonSerializerSettings()
        {
            ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore
        });

    return Content(list, "application/json");
}

我需要输出:

[[1,"name1",23],[2,"name2",30],[3,"name3",26],[4,"name4",29]]

【问题讨论】:

  • 您需要提供有关您当前获得的内容的更详细信息...您在所需输出中显示的 JSON 不是有效的 JSON,从您的代码来看,您实际上可能得​​到了正确的 JSON
  • 我应该澄清一下 - 当我说它不是有效的 JSON 时,我的意思是它不代表绑定到任何类型对象结构的 JSON。
  • 那是因为该方法返回了正确的 JSON?您想要一个数组类型不一致(字符串和整数)的数组吗?您可能必须手动生成这些字符串,因为世界上没有序列化程序可以生成那种输出
  • 如果您真正想要的是一个数组数组,那么在序列化之前将您的列表转换为该类型:model.Select(m =&gt; new object[] { m.Id, m.name, m.age });
  • @RobertPetz 世界上没有一个序列化器会产生这种输出 - 确定吗? Computer says no

标签: c# json asp.net-mvc json.net


【解决方案1】:

如果它满足您的需求,您可以使用此解决方法,如果可行,请告诉我

        List<Myclass> model = new List<Myclass>();
        model.Add(new Myclass() { Id = 1, Name = "Name1", Age = 50 });
        model.Add(new Myclass() { Id = 2, Name = "Name2", Age = 51 });
        model.Add(new Myclass() { Id = 3, Name = "Name3", Age = 52 });

        string json = JsonConvert.SerializeObject(model);
        //If you want to replace { with [ and } with ]
        json = json.Replace("{", "[").Replace("}", "]");

        //you can use this workaround to get rid of property names
        string propHeader = "\"{0}\":";

        json= json.Replace(string.Format(propHeader, "Id"), "")
            .Replace(string.Format(propHeader, "Name"),"")
            .Replace(string.Format(propHeader, "Age"), "");

        Console.WriteLine(json);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-06
    • 1970-01-01
    • 1970-01-01
    • 2014-04-07
    相关资源
    最近更新 更多