【问题标题】:Converting list of objects to json array将对象列表转换为 json 数组
【发布时间】:2016-02-26 14:31:23
【问题描述】:

我有一个包含电子邮件地址和状态数据成员的类对象列表。我正在尝试将这些转换为 json,确保数组上有“操作”字样。

这是我的课:

class MyClass
{
    public string email {get; set; }
    public string status { get; set; }
}

这是我当前的代码(未构建):

List<MyClass> data = new List<MyClass>();
data = MagicallyGetData();

string json = new {
     operations = new {
          JsonConvert.SerializeObject(data.Select(s => new {
               email_address = s.email,
               status = s.status
          }))
     }
};

这是我想要获取的 JSON:

{
  "operations": [
    {
      "email_address": "email1@email.com",
      "status": "good2go"
    },
    {
      "email_address": "email2@email.com",
      "status": "good2go"
    },...
  ]
}

EDIT1 我应该提到我为此获得的数据来自数据库。我正在从数据库中反序列化一个 JSON 并以几种不同的方式使用数据,因此我无法更改我的班级的成员名称。

【问题讨论】:

  • 你实际上得到了什么?
  • 你为什么对匿名对象感到厌烦?改用 datacontrat 或名称属性 newtonsoft.com/json/help/html/JsonPropertyName.htm
  • @Arpit 我得到的最接近的是相同的输出,在数组之前没有操作字符串。

标签: c# json serialization


【解决方案1】:

我相信这会给你想要的。如果可能,您将不得不更改您的类属性名称 -

        class MyClass
        {
             public string email_address { get; set; }
             public string status { get; set; }
        }

        List<MyClass> data = new List<MyClass>() { new MyClass() { email_address = "email1@email.com", status = "good2go" }, new MyClass() { email_address = "email2@email.com", status = "good2go" } };
        var json = JsonConvert.SerializeObject(new
        {
            operations = data
        });

【讨论】:

  • 经过一些调整,这就是我采用的解决方案。谢谢,不胜感激。
  • 如果我一开始既不想要数据也不想要操作怎么办?
  • @HafizH 如果您不想在开头进行“操作”,只需执行以下操作:var json = JsonConvert.SerializeObject(operations)
【解决方案2】:
class MyClass
{
     public string email_address { get; set; }
     public string status { get; set; }
}

List<MyClass> data = new List<MyClass>() { new MyClass() { email_address = "email1@email.com", status = "good2go" }, new MyClass() { email_address = "email2@email.com", status = "good2go" } };

//Serialize
var json = JsonConvert.SerializeObject(data);

//Deserialize
var jsonToList = JsonConvert.DeserializeObject<List<MyClass>>(json);

【讨论】:

    【解决方案3】:

    你可以试试这样的:

    using System.Web.Script.Serialization;
    var jsonSerialiser = new JavaScriptSerializer();
    var json = jsonSerialiser.Serialize(data);
    

    【讨论】:

      【解决方案4】:

      这里是简单的代码

      JArray.FromObject(objList);

      【讨论】:

        猜你喜欢
        • 2021-10-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-02-16
        • 2013-06-25
        • 2016-10-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多