ASP.NET MVC 中使用Json的一点小疑问(已解决)

大多数情况下我们返回到客户端的Json有两种方式:

1、直接传对象给Json()去转成Json

ExpandedBlockStart.gif 代码
public  ActionResult JsonTest()
{

        List
< Result >  list  =   new  List < Result > ();
        list.Add(
new  Result { State  =   2 });
        list.Add(
new  Result { State  =   5  });

return  Json(list,JsonRequestBehavior.AllowGet);
}


public  ActionResult JsonTest()
        {

            List
< Result >  list  =   new  List < Result > ();
            list.Add(
new  Result { State  =   2 });
            list.Add(
new  Result { State  =   5  });

            
return  Json(list,JsonRequestBehavior.AllowGet);
        }

 

2、手写拼凑
public  JsonResult JsonTest2()
        {
            
string  s = @" [{'State':2},{'State':5}] " ;

            
return  Json(s, JsonRequestBehavior.AllowGet);
        }

 

前端都用同样的方法:

            $( function () {              
                $.ajax({
                    type: 
" Get " ,
                    url: 
" Home/JsonTest " ,
                    data: { t: 
new  Date() },
                    dataType: 
" json " ,
                    success: 
function (data) {
                        alert(data);                       
                    }
                });
                $.ajax({
                    type: 
" Get " ,
                    url: 
" Home/JsonTest2 " ,
                    data: { t: 
new  Date() },
                    dataType: 
" json " ,
                    success: 
function (data) {
                        alert(data);                       
                    }
                });
            });

 

这时候得到的结果:

JsonTest : [object Object],[object Object] //已经被转成的Json数组

JsonTest2: [{'State'2},{'State':5}] //还是字符串

第二种情况解决办法到很简单:

alert(eval( ' ( '   +  data  +   ' ) ' ));

 运行字符串就可以得到Json数组.

打开reflector查看到JsonResult :

JavaScriptSerializer serializer  =   new  JavaScriptSerializer();
response.Write(serializer.Serialize(
this .Data));

 

 事实上序列化之后都是string,不知道为什么会这样,不解!! 那位高人指点一二!

 

解决办法:

原因被重复的Serialize,所以不能用Json()去返回,改用Context就Ok了。

  public  ActionResult JsonTest2()
        {
            
string  s = @" [{""State"":2},{""State"":5}] " ;

            
return  Content(s);
        }


 

 

转载于:https://www.cnblogs.com/DanielChow/archive/2010/05/03/1726398.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值