c如何解析json数据POST原数据

在 SegmentFault,解决技术问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。
一线的工程师、著名开源项目的作者们,都在这里:
获取验证码
已有账号?
问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
jquery.ajax post提交一个对象
打印出req.body,结果是这样的
请问这是什么原因?用form表单同步提交是可以正常解析的
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
jQuery.ajax send 数据的时候默认 contentType 是 application/x-www-form-urlencoded
application/x-www-form-urlencoded 标准要求如下
name和value都必须escaped,空格使用+代替
按照文档中的顺序 以names/values (键值对)形式 提交,每一组数据以&分割
info[name]=hury&info[age]=40
楼主提问的数据,post.body内容如上,解析是完全正确的,键值对只有一级,且所有键都是平等的,不存在子元素等。
如果希望提交的数据直接解析成对象,可以参考其他的答案,body-parser formidable等组件解析。
常用的contentType 还有
multipart/form-data 上传文件
text/plain 原生数据没有经过处理,可以自定义解析方式
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
你使用express的时候,是不是没有安装并启用body-parser这个中间件呀?
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
post的数据是键值对的形式的。你可以把数据弄成字符串的形式传过去。
可改写为:
var data = {
name: 'john',
url: 'test',
type: 'post',
dataType: 'text',
data: JSON.stringify(data)
.post('/test', function(req, res) {
console.log(JSON.parse(req.body.data));
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
为什么不用更好用的 Nokitjs ?-D
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
各位,我看了下bodyParser官方的解释:bodyParser.urlencoded的参数 extended,如果为 true (默认),则使用第三方插件 qs 来解析内容,如果为 false 则使用node内建对象 querystring 来解析内容。
区别就在这里了:querystring 并不支持解析复杂对象(多级嵌套),比如说 'data[name]=henry&data[age]=10' 是不被支持的,它支持 name=henry&age=10 的这种query格式。qs 则是在querystring的基础进行了封装,实现了对复杂对象的解析,如 qs.parse('data[name]=henry&data[age]=10') 可以得出 { data: { name: 'henry', age: 10 } }
至于为什么form表单直接提交和ajax提交结果不一样,原因是:form提交一个多选项,传输的格式是这样的 hobby=sport&hobby=coding 而使用jquery.ajax post提交 {hobby: ['sport', 'coding']},传输的格式是这样的 hobby[0]=sport&hobby[1]=coding,所以就造成了解析的错误。至于为什么jquery没有把对象转换成我们想要的query形式,暂时还不太清楚原因。
qs 在使用时有很多限制,比如嵌套的层数、list的长度等等,express生成器默认给该中间件配置 extended: false,也许就是出于性能考虑。
最后,解决办法:方法一:将jquery.ajax的contentType参数设置为'application/json',并对传输的数据进行转换方法二:配置中间件borderParser.urlencoded({ extended: true })
最最后,感觉各位大神的帮忙,感谢 nealnote
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
data格式有问题
同步到新浪微博
分享到微博?
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:2012年 总版技术专家分年内排行榜第一
2013年 总版技术专家分年内排行榜第七2011年 总版技术专家分年内排行榜第五2009年 总版技术专家分年内排行榜第九
本帖子已过去太久远了,不再提供回复功能。16:37 提问
servlet接收到post消息,但解析不出数据
这是部分客户端代码:
String queryString = "testtime=" +strArray[0] + "&clientIP=" + strArray[1]+"&wsURL="+strArray[2]+"&RTT="+strArray[3]+
"&MessageCode="+strArray[4]+"&Message="+strArray[5];
PrintWriter
BufferedReader in=
String line =
jTextArea.append("2、向服务器发送测试数据 ");
jTextArea.append("\n");
URL servletURL = new URL(addressSendData);
URLConnection conn = servletURL.openConnection();
//设置通用的请求属性
conn.setRequestProperty("accept", "*/*");
conn.setRequestProperty("connection", "Keep-Alive");
//发送POST请求必须设置如下两行
conn.setDoOutput(true);
conn.setDoInput(true);
((HttpURLConnection) conn).setRequestMethod("POST");
//获取URLConnection对象对应的输出流
out = new PrintWriter(conn.getOutputStream());
//发送请求参数
System.out.println(queryString);
out.println(queryString);
//flush输出流的缓冲
out.flush();
in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
while((line = in.readLine())!=null)
jTextArea.append(line+"\n");
这是服务器servlet的部分代码:
Class.forName(Driver).newInstance();
connection=DriverManager.getConnection(URL,Username,Password);
statement = connection.createStatement();
//resultSet = statement.executeQuery(sql);
//向数据库存入数据
testtime = request.getParameter("testtime");
clientIP = request.getParameter("clientIP");
wsURL = request.getParameter("wsURL");
RTT = request.getParameter("RTT");
MessageCode = request.getParameter("MessageCode");
Message = request.getParameter("Message");
storetime = new Date().getTime();//计算存入数据库时间
System.out.println(testtime);
System.out.println(storetime);
len = statement.executeUpdate("INSERT INTO testtable VALUES ('"+testtime+"','"+clientIP+"','"+wsURL+"','"+RTT+"','"+MessageCode+"','"+Message+"','"+storetime+"')");
但是数据库里面插入的记录只有storetime有取值,其他字段都为空值,请热心人士帮忙分析一下,不胜感激!
按赞数排序
你发起的事post请求,用getParameter,实施getAttribute,另外你传入的post参数没有storetime这个变量呀
哥们,貌似你贴出来的代码,没有传值过去也,你只拼接了,打印了,但是没有传值去后台。
你又不是form表单提交的 那么你就用setAttribute("parasName")
在servlet中用getAttribute()的方式获取呗
其他相关推荐君,已阅读到文档的结尾了呢~~
基于HTTP协议的POST数据分析与还原,http协议还原,http post 协议,http协议 get post,http post 协议格式,协议还原,网络协议还原,协议4还原,postgresql备份与还原,代持还原 代持协议 税
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
基于HTTP协议的POST数据分析与还原
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer--144.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口2013年3月 总版技术专家分月排行榜第二
2014年2月 Java大版内专家分月排行榜第一2013年8月 Java大版内专家分月排行榜第一2013年5月 Java大版内专家分月排行榜第一2013年4月 Java大版内专家分月排行榜第一2013年3月 Java大版内专家分月排行榜第一2013年2月 Java大版内专家分月排行榜第一
2013年12月 Java大版内专家分月排行榜第二
2013年8月 Java大版内专家分月排行榜第三
2013年12月 Java大版内专家分月排行榜第二
2013年8月 Java大版内专家分月排行榜第三
本帖子已过去太久远了,不再提供回复功能。}

我要回帖

更多关于 如何解析json数据 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信