创建一个json格式的对象

时间:2014-04-10 17:40:50

标签: c# asp.net json httphandler

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

[
 {
 nome: "test",
 apelido: "test"
 }
]

我想像这样创建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 个答案:

答案 0 :(得分:4)

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

public class MyClass
{
    public int success { get; set; }
    public int error { get; set; }
    public string gestor { get; set; }
    public List<Cliente> cliente { get; set; }
}

public class Cliente
{
    public string nome { get; set; }
    public string apelido { get; set; }
}

现在你可以循环填充这些对象的列表:

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));

查尔斯&#39;如果你对这个课程没有其他用处并且它不太复杂,那么匿名课程的建议也完全没问题。

答案 1 :(得分:3)

最简洁的方法是使用匿名类,如果你把它扔到一些客户端代码而不是在服务器端代码的其他地方再次弄乱这个确切的对象,这是处理它的最简单的方法

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()
});