首页 新闻 赞助 找找看

序列化或反序列化的JSON javascriptserializer

0
悬赏园豆:30 [已解决问题] 解决于 2016-01-18 17:06

在使用错误的序列化或反序列化的JSON javascriptserializer。该字符串的长度超过设定的maxjsonlength属性的值。怎么解决啊,在网上添加

<system.web.extensions>
<scripting>
<webServices>
<jsonSerialization maxJsonLength="1024000" />
</webServices>
</scripting>
</system.web.extensions>

没有用,各位有方法么

菇凉很好的主页 菇凉很好 | 初学一级 | 园豆:3
提问于:2015-04-09 17:23
< >
分享
最佳答案
0

贴代码

收获园豆:30
幻天芒 | 高人七级 |园豆:37175 | 2015-04-09 17:32

不知贴哪里的代码

菇凉很好 | 园豆:3 (初学一级) | 2015-04-09 17:33

@菇凉很好: 报错附近的。

幻天芒 | 园豆:37175 (高人七级) | 2015-04-09 20:47

public ActionResult BorrowingGuideByid(int id)
{
Status sta = new Status();
try
{
string sql = "select * from borrowguideinfo where id={0}";
DataSet ds = provider.GetDataBySql(provider.Format(sql, id));
sta.content = new string[] { ds.Tables[0].Json() };
sta.success = 1;
}
catch (Exception ex)
{
sta.message = ex.Message;
}
return Json(sta);
}

这个是后台方法

$.ajax({
url: '/finance/BorrowingGuideByid',
type: 'post',
data: { id: id },
error: function (e) {
alert(e.statusText);
},
success: function (res) {
if (res.success) {
if (res.content != null) {
var dt = jQuery.parseJSON(res.content[0]);
alert(dt.length)
if (dt.length > 0) {
jGet('arttitle').value = dt[0]['arttitle'];
$('#description').htmlx(dt[0]['content']);
jGet('swf').value = dt[0]['swf'];
jGet('title').value = dt[0]['title'];
if (jGet('swf').value.length > 0) {
$('<span>' + jGet('swf').value + '<img style="cursor: pointer" src="/resource/image/ico/no.gif" onclick="page.removefile(this)"/></span>').appendTo('#divup');
}
}
}
}
else {
alert(res.message);
}
}
});这个是前提调用

菇凉很好 | 园豆:3 (初学一级) | 2015-04-10 08:55

@菇凉很好: 检查sta对象。

幻天芒 | 园豆:37175 (高人七级) | 2015-04-10 09:58

@幻天芒: 


[Serializable]
public class Status
{
public object content;
public string message;
public int success;
public string title;

public Status();
}对象就是这样,感觉没什么问题啊?

[Serializable]是不是这个

菇凉很好 | 园豆:3 (初学一级) | 2015-04-10 10:01

@菇凉很好: 可能是哪个字符串太长了。你可以使用Json.Net进行序列化,应该能成功的。

幻天芒 | 园豆:37175 (高人七级) | 2015-04-10 10:04

@幻天芒: 就是编辑的内容过多,所以报错,不知道具体这么解决,能贴代码吗?

菇凉很好 | 园豆:3 (初学一级) | 2015-04-10 10:06

@菇凉很好: 换用Json.net处理吧。基本不用自带的这个Json。

幻天芒 | 园豆:37175 (高人七级) | 2015-04-10 10:06

@幻天芒: 不太明白,不知道怎么弄,这代码都是前面人写的,我只是维护,所以不是很熟

菇凉很好 | 园豆:3 (初学一级) | 2015-04-10 10:08

@菇凉很好: 

 JavaScriptSerializer jss = new JavaScriptSerializer();
 jss.MaxJsonLength = int.MaxValue; //这样将最大长度设置一下试试呢。
默认是:2097152
幻天芒 | 园豆:37175 (高人七级) | 2015-04-10 10:11

@幻天芒:这个是写在那个部分呢?是方法里面吗?

菇凉很好 | 园豆:3 (初学一级) | 2015-04-10 10:13

@菇凉很好: 额,暂时不用这种方案了。你就把你web.config中那个1024000改大一点。多加几个0,应该就不会超长了。

幻天芒 | 园豆:37175 (高人七级) | 2015-04-10 10:21

@幻天芒: 哈哈哈哈,有没有一种对牛弹琴的感觉

羽商宫 | 园豆:2490 (老鸟四级) | 2015-04-10 10:23

@羽商宫: 还好,只是思维应变慢了点。应该是经验不足。

幻天芒 | 园豆:37175 (高人七级) | 2015-04-10 10:25

@幻天芒: ·····还是不行啊,呜呜

菇凉很好 | 园豆:3 (初学一级) | 2015-04-10 10:27

@羽商宫: 技术菜······

菇凉很好 | 园豆:3 (初学一级) | 2015-04-10 10:28

@菇凉很好: 感觉出来了,没事了多看看书。

羽商宫 | 园豆:2490 (老鸟四级) | 2015-04-10 10:31

@菇凉很好: 

将return Json(sta)替换为

var serializer = new JavaScriptSerializer(); 
serializer.MaxJsonLength = int.MaxValue;
return serializer.Serialize(sta); 

,然后将返回值修改为string。
幻天芒 | 园豆:37175 (高人七级) | 2015-04-10 10:31

@菇凉很好: 你先看看如果提交一个比较少的内容的话,会不会出错,看看那个变长了之后会报这个错误。你有源码吗,能一步步调试么?

羽商宫 | 园豆:2490 (老鸟四级) | 2015-04-10 10:33

@羽商宫: 编辑内容少不会报错,就是多的时候报错,调试到后台方法 //sta.content = new string[] { ds.Tables[0].Json() };的时候报错

菇凉很好 | 园豆:3 (初学一级) | 2015-04-10 13:27
其他回答(1)
0

你哪里调用的这个方法你都不知道么?

羽商宫 | 园豆:2490 (老鸟四级) | 2015-04-09 19:50
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册