C# 创建json格式的对象

C# 创建json格式的对象,c#,asp.net,json,httphandler,C#,Asp.net,Json,Httphandler,我在C#/aspx中创建了这个JSON数组: 我想创建如下JSON: { success: 1, error: 0, gestor: "test", cliente: [ { nome: "test", apelido: "test" } ] } 这是我的代码: var gestor = new JArray(); foreach (System.Data.DataRow item in com.Execute("select

我在C#/aspx中创建了这个JSON数组:

我想创建如下JSON:

{
  success: 1, 
  error: 0, 
  gestor: "test", 
  cliente: [
    {
      nome: "test",
      apelido: "test"
    } 
  ]
}
这是我的代码:

var gestor = new JArray();
foreach (System.Data.DataRow item in com.Execute("select * from utilizadores").Rows)
{
    gestor.Add(new JObject(new JProperty("nome", item["first_name"].ToString()),
               new JProperty("apelido", item["last_name"].ToString())));
}
context.Response.Write(gestor);

我将为此创建一个类(实际上是2个):


Charles关于匿名类的建议也很好,如果这个类没有其他用途,而且也不太复杂的话。

我只想为此创建一个类(实际上是2个):


Charles关于匿名类的建议也很好,如果这个类没有其他用途,而且也不太复杂。

最简洁的方法就是使用匿名类,如果您将这个问题抛给一些客户端代码,而不是在服务器端代码的其他地方再次处理这个确切的对象,那么这是最简单的处理方法

var outputString = JsonConvert.SerializeObject(new { 
        success=1, 
        error=0, 
        gestor="test", 
        cliente = (from System.Data.DataRow i in com.Execute("select * from utilizadores").Rows 
                  select new { 
                     nome=item["first_name"],
                     apelido= item["last_name"] 
        }).ToArray()
});

最简洁的方法就是使用一个匿名类,如果您将它扔给一些客户端代码,而不是在服务器端代码的其他地方再次处理这个对象,那么这是最简单的处理方法

var outputString = JsonConvert.SerializeObject(new { 
        success=1, 
        error=0, 
        gestor="test", 
        cliente = (from System.Data.DataRow i in com.Execute("select * from utilizadores").Rows 
                  select new { 
                     nome=item["first_name"],
                     apelido= item["last_name"] 
        }).ToArray()
});

这实际上并不像你在这个问题上所说的那样是JSON。第二,我认为创建一个具有适当属性的类并将其序列化要比像这样手动创建容易得多。但如何创建呢???你能帮忙吗?请看下面我的答案。要准确地了解您要做的事情有点困难,但希望它至少能为您指明正确的方向。这并不是您在这个问题中所说的JSON。第二,我认为创建一个具有适当属性的类并将其序列化要比像这样手动创建容易得多。但如何创建呢???你能帮忙吗?请看下面我的答案。要准确地了解您要做的事情有点困难,但希望它至少能为您指明正确的方向。
JObject
JArray
的使用强烈地表明OP已经在使用了。@MattBurland对此表示感谢,因为它没有广泛使用该库,所以不熟悉这些类,进行了删除suggestion@CharlesKeyser:NP。只是不想让OP觉得他们需要别的东西。
JObject
JArray
类只有在需要对序列化进行非常精确的控制时才真正需要。使用
JObject
JArray
强烈表明OP已经在使用了。@MattBurland感谢这一点,没有广泛使用库,因此不熟悉这些类,进行了删除suggestion@CharlesKeyser:NP。只是不想让OP觉得他们需要别的东西。只有在需要对序列化进行非常精确的控制时,才真正需要
JObject
JArray
类。
var myObj = new MyClass();
myObj.cliente = new List<Cliente>();

foreach (System.Data.DataRow item in com.Execute("select * from utilizadores").Rows)
{
     myObj.cliente.Add(new Cliente() 
     {
         nome = item["first_name"].ToString(),
         apelido = item["last_name"].ToString()
     };
}

// assuming that is successful
myObj.success = 1;
// not sure how you wanted this to be populated:
myObj.gestor = "test";
context.Response.Write(JsonConvert.SerializeObject(myObj));
var outputString = JsonConvert.SerializeObject(new { 
        success=1, 
        error=0, 
        gestor="test", 
        cliente = (from System.Data.DataRow i in com.Execute("select * from utilizadores").Rows 
                  select new { 
                     nome=item["first_name"],
                     apelido= item["last_name"] 
        }).ToArray()
});