public class testmodel
{
  public string a{ get; set; }
  public string b{ get; set; }
  public string c{ get; set; }
}[HttpPost]
public string test(testmodel model)
{
  return model.a + "--" + model.b + "--" + model.c;
}
 $.ajax({
                url: "/api/test",
                type: "POST",
                contentType: "application/json; charset=urf-8",
                dataType: "json",
                data: "{ a:'测试1',b:'测试2',c:'测试3' }",
                success: function (msg) {
                        alert(msg);
                 },
                 error: function (XMLHttpRequest, textStatus, errorThrown) {
                        alert("请求失败,消息:" + textStatus + "  " + errorThrown);
                  }
 });这样是没问题的,但如果要post一个比较复杂的json呢,像下面这样:{
title:'名单',
list:{
xiaoming:{name:'小明',gender:'男'},
laowang:{name:'老王',gender:'男'}
 .......
 },
a:'测试1' 
b:'测试2' 
c:'测试3' 
}服务端要如何接收这样的json呢?

解决方案 »

  1.   

    class A里有个list的class B即可,你的json格式不对,自己注意下
      

  2.   

    创建一个实体,实体里的格式和json传过来的保持一样
      

  3.   

    一样的,你这个都是单个的实体,如果你要传递数组的话,要通过{'':json}来传递
      

  4.   

    data: JSON.stringify(obj)
      

  5.   

    参考之:
    http://www.cnblogs.com/insus/p/4343538.html
      

  6.   

    不要自己拼接json字符串
    定义实体类,然后用json转换类库 如Json.NET - Newtonsoft
    多复杂的都可以
      

  7.   


    是这样的,则其实是提高效率的关键。而且,其实应该使用强类型的 tyepscript ,这样就能在客户端直接定义消息通讯数据实体的 interface 确保前端编程的效率,而不要直接使用 javascript 来编写这些代码。
      

  8.   

    建议自己建立一个看的见的 Class,然后两边都用一样的Class 去转Json绝对不会出错。不过有的小地方要注意
    就是Class 属性 - 如果- 宣告日期型态,但是 Oracle DB 栏位是 Datatime 当时存 dbnull进去 
    抓出来转的时候会 GG........
      

  9.   

    将你的json字符串复制一下。
    然后到vs中选择编辑--选择性黏贴--将json黏贴为类。
    这样就能创建出对应json的实体了。最后就是将实体作为webapi的参数