背景

事情的起因是这样的。最近正在调试Socket.io的Android端接口。自己找到的Socket.io的Android的官方资料只是简单的字符串传递,而后台的接口则是一次性传递多组键值对参数,考虑到js的字典可以用类似json键值对来初始化,我就把参数直接拼接成了字符串进行测试。拼接方式如下

String str = "{\"key\":"+value+"}";

也就是使用最普通的java拼接字符串的方式,其中对字符串中的引号做了转义处理。这也发送到js服务端,打印信息可以打印出{“key”:”value}这样的字符串,但是js服务端并不能通过字典方式由键获取到值,而是直接当作字符串处理。

尝试多种方式之后,发现直接使用JSONObject,用put方法添加键值对,这样服务端就可以正确将参数解释为字典类型,同时我们在服务端打印数据时可以发现js将这些数据解析为Object类型,而不是我们之前所见字符串。

这说明JSONObject生成的json与我们直接拼写的是有区别的,这样在Socket.io的Android的sdk中对这个参数的处理方式肯定也不相同,眼见为实,现在我们打印一下处理完毕后即将发送的参数,看看两者有什么区别。

如图 前面一个json是JSONObject生成的json,而第二个是我们手动生成的,可以清楚发现,转意字符也在其中,通过网络流直接发送到服务端,服务端是无法直接用这些带转意字符的字符串创建字典数据的,但是这并不影响当做字符串打印。另外,如果我们将JSONObject对象进行toString操作,将生成的字符串当做参数传入,同样会引入转义字符,也是不可取的。

结论

在进行数据传输使用json时,我们尽可能使用JSONObject进行json生成,手动生成可能会引入其他转移字符活着多余的引号而导致其他一些问题。

Java json拼接字符串_JSONObject与java字符串拼接json的区别相关推荐

  1. java 嵌套对象转xml_Gson对Java嵌套对象和JSON字符串之间的转换 | 学步园

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,具有良好的跨平台特性.近几年来已经和XML一样成为C/S架构中广泛采用的数据格式.有关JSON的更多知识, ...

  2. java对象转json字符串日期格式_fastJSON字符串类型数据中的日期转换为Java bean的日期对象...

    fastJSON字符串类型数据中的日期转换为Java bean的日期对象 Person.java import java.io.Serializable; import java.util.Date; ...

  3. Java中普通字符串转json_java普通对象和json字符串的互转

    一.java普通对象和json字符串的互转 java对象---->json 首先创建一个java对象: 现在java对象转换为json形式: 定义了一个Student的实体类,然后分别使用了JS ...

  4. java string 反序列化_如何将java.lang.String的空白JSON字符串值反序列化为null?

    我正在尝试使用简单的JSON反序列化为Java对象.不过,我,让空 字符串 值,java.lang.String属性值.在其余的属性中,空白值将转换为 空 值(这是我想要的). 我的JSON和相关的J ...

  5. JAVA进阶教学之(StrngBuffer进行字符串拼接)

    使用StringBuffer字符串拼接目的就是为了让字符串占用的内存空间减少,提高效率 思考:我们在实际的开发中,如果需要进行字符串的频繁拼接,会有什么问题? 答案: 因为java中的字符串是不可变的 ...

  6. java对象和字符串转换_java中字符串和JSON对象、Bean之间的相互转换

    JSON格式用于数据传输.bean用于封装数据信息.String用于展示封装信息.json格式的内容用json工具或者之间在json.cn展示比较清晰. 一.将Sting转为Json 在开发中,经常是 ...

  7. java字符串拼接_这样写Java,同事直呼666

    作者:涛姐涛哥 来源:cnblogs.com/taojietaoge/p/11575376.html 一.MyBatis 不要写 1=1 当遇到多个查询条件,使用where 1=1 可以很方便的解决我 ...

  8. android string拼接字符串_「JAVA」细述合理创建字符串,分析字符串的底层存储,你不该错过...

    Java基础之字符串操作--String 字符串 什么是字符串?如果直接按照字面意思来理解就是多个字符连接起来组合成的字符序列.为了更好的理解以上的理论,我们先来解释下字符序列,字符序列:把多个字符按 ...

  9. c 传string 给java_JNI基础 将字符串传递给c,在c中拼接后返回给java

    (1)首先将java传递过来的字符串转化成c的char类型的数组,代码如下 char*   Jstring2CStr(JNIEnv*   env,   jstring   jstr) { char*  ...

最新文章

  1. win10 c盘清理_win10 C盘爆红怎么清理?
  2. SQL Server 中 SELECT INTO 和 INSERT INTO SELECT语句的区别
  3. Centos设置程序开机自启的方法
  4. go grpc测试_Grpc — 整体性能测试
  5. ruby 在 windows 中 新建进程 打开其他程序
  6. MyBatis直接执行SQL查询及批量插入数据
  7. 输出呈三角形的杨辉三角形(C语言)
  8. 程序员面试金典——1.1确定字符互异
  9. svm中的数学和算法
  10. caj转换成word方法免费
  11. cmd如何打开、运行?
  12. [蓝桥杯][2018年第九届真题]小朋友崇拜圈、耐摔指数、堆的计数、缩位求和、约瑟夫环
  13. 也谈把程序写好 —— 一点初级程序员的鄙见
  14. 【智慧农业】LORA农业灌溉解决方案
  15. 在计算机中 汉字系统把一个汉字表示为,计算机问题汉字系统在计算机内把一个汉字表示 – 手机爱问...
  16. 安全面试之安全基础(一)
  17. bugku-渗透测试1通关 wp
  18. PingCAP CTO 黄东旭 :基础软件“好用”指南——必须跨越这两道鸿沟!
  19. 公开处刑:复现不了就撤稿!
  20. 15分钟看完:悉尼科技大学入选 CVPR 2021 的 9 篇论文,都研究什么?

热门文章

  1. springmvc、struts2、servlet的联系与区别
  2. 内核 网络流行语_HTML5作为流行语
  3. 功能实现思路、逻辑思路、功能、逻辑
  4. 怎样调整计算机亮度,怎样调整计算机亮度_电脑怎么调整亮度
  5. java计算机毕业设计精准扶贫管理系统源码+mysql数据库+系统+lw文档+部署
  6. java计算机毕业设计高校医务管理系统源程序+mysql+系统+lw文档+远程调试
  7. 用python画写轮眼_仿写轮眼修改版
  8. 软件测试及Bug管理经验谈
  9. oracle表分区创建
  10. EXCEL2016常用技巧及举例