Java中使用JSON传递字符串的注意事项
一、问题由来
项目开发中,由于实际需要将某一个功能模块抽取成了一个单独的服务,其他地方需要调用的时候,通过Spring提供的RestTemplate类发送请求进行调用。
经过测试这种方法完全可行,我和同事都能够正常使用,可是有一次调用一个方法时始终出现问题。调用方的参数可以正常传递,可是被调用方却使用匹
配不上,寻找了很久都没找到原因。
二、问题分析
问题主要在传递的invoType参数上,在被调用方一直匹配不上,两边都是使用switch语句进行匹配,数据类型为String类型,调用方的switch语
句可以正常匹配,可是在被调用却始终匹配不上,于是就执行了默认的default语句。并且被调用方也正常的接收到了invoType的值;
调用方传参:

被调用方获取参数;

正常来说不应该出现这样的问题,既然被调用方能获取到数据,那就说明数据传输没有问题,那到底是哪里出问题了呢?
经过反复排查,打印最终找到问题的原因,打印输出的结果如下:

输出的结果中,传递的字符串两边多了两个双引号因此导致出现问题,不能正确匹配。由于输出的字符串,最开始看到的时候也没在意,忽略了一点
直接输出字符串时,变量的值两边是没有双引号的。

那我这个调用方法中,双引号的字符串是哪来的呢?是我在传递字符串的数据时使用JSON处理过。方法中调用的fastJson中的toJSONString()方法,
这样在处理字符串的时候,就多了一对双引号,最终导致后去到的参数不正确不能正常调用。

三、解决方案
找到真正的问题后,解决办法就非常好办,对于单个字符串参数,直接传递就行不需要将其转换为JSON数据进行传递。
Java中使用JSON传递字符串的注意事项的更多相关文章
- JAVA中使用JSON进行数据传递
最近在做一个基于JAVA Servlet的WEB应用以及对应的Anroid应用客户端的开发工作. 其中,在接口的访问和数据的传输方面使用的比较多的是使用JSON对象来操作格式化数据:在服务器端采用JS ...
- 转载:JAVA中使用JSON进行数据传递
转载网址:http://www.cnblogs.com/undead/archive/2012/07/18/2594900.html 最近在做一个基于JAVA Servlet的WEB应用以及对应的An ...
- Java中的值传递
1.先比较下字符串的比较 == 代表全等于 值和地址(存放地址) 全部相等于. equals 值等于== 和 equals的区别 列如下面的 如果name1==name2是等于的 然而name1==n ...
- JSON(五)——同步请求中使用JSON格式字符串进行交互(不太常见的用法)
在同步请求中使用JSON格式进行数据交互的场景并不多,同步请求是浏览器直接与服务器进行数据交互的大多是用jsp的标签jstl和el表达式对请求中的数据进行数据的渲染.我也是在一次开发中要从其它服务器提 ...
- JSON(三)——java中对于JSON格式数据的解析之json-lib与jackson
java中对于JSON格式数据的操作,主要是json格式字符串与JavaBean之间的相互转换.java中能够解析JSON格式数据的框架有很多,比如json-lib,jackson,阿里巴巴的fast ...
- 为什么说Java中只有值传递
本文转载自公众号 Hollis 对于初学者来说,要想把这个问题回答正确,是比较难的.在第二天整理答案的时候,我发现我竟然无法通过简单的语言把这个事情描述的很容易理解,遗憾的是,我也没有在网上找到哪篇文 ...
- 为什么说Java中只有值传递(转载)
出处:https://www.hollischuang.com/archives/2275 关于这个问题,在StackOverflow上也引发过广泛的讨论,看来很多程序员对于这个问题的理解都不尽相同, ...
- Java中没有引用传递只有值传递(在函数中)
◆传参的问题 引用类型(在函数调用中)的传参问题,是一个相当扯的问题.有些书上说是传值,有些书上说是传引用.搞得Java程序员都快成神经分裂了.所以,我们最后来谈一下“引用类型参数传递”的问题. 如下 ...
- 为什么说Java中只有值传递----说服自己
在开始深入讲解之前,有必要纠正一下大家以前的那些错误看法了.如果你有以下想法,那么你有必要好好阅读本文. 错误理解一:值传递和引用传递,区分的条件是传递的内容,如果是个值,就是值传递.如果是个引用,就 ...
- 为什么说 Java 中只有值传递?
对于初学者来说,要想把这个问题回答正确,是比较难的.在第二天整理答案的时候,我发现我竟然无法通过简单的语言把这个事情描述的很容易理解,遗憾的是,我也没有在网上找到哪篇文章可以把这个事情讲解的通俗易懂. ...
随机推荐
- 数据挖掘机器学习[五]---汽车交易价格预测详细版本{模型融合(Stacking、Blending、Bagging和Boosting)}
题目出自阿里天池赛题链接:零基础入门数据挖掘 - 二手车交易价格预测-天池大赛-阿里云天池 相关文章: 特征工程详解及实战项目[参考] 数据挖掘---汽车车交易价格预测[一](测评指标:EDA) 数据 ...
- 7.6 Windows驱动开发:内核监控FileObject文件回调
本篇文章与上一篇文章<内核注册并监控对象回调>所使用的方式是一样的都是使用ObRegisterCallbacks注册回调事件,只不过上一篇博文中LyShark将回调结构体OB_OPERAT ...
- Win32汇编:各种语句的构造方式
整理复习汇编语言的知识点,以前在学习<Intel汇编语言程序设计 - 第五版>时没有很认真的整理笔记,主要因为当时是以学习理解为目的没有整理的很详细,这次是我第三次阅读此书,每一次阅读都会 ...
- django orm 筛选
import os os.environ.setdefault("DJANGO_SETTINGS_MODULE", "test.setting") import ...
- MySQL 中 的 bit 类型,tinyint(1);
之前一直以为 mysql中没有 bit类型,需要使用 tinyint 来标识 bit.但是前端的实体类,不好控制,后来发现这些问题已经有了默认的统一设置,这样反而更好. 总结:MySQL中 使用布尔类 ...
- IntPtr 来把指针转换为 Int
由于想得到指针的值,这个时候,不能把指针强制转换为 integer 因为 integer 只适合32位的系统,64位的系统下,需要用 int64, 通过这个函数来转换,就可以屏蔽掉系统是32位 还是 ...
- 当我们在谈 .NET Core 跨平台时,我们在谈些什么?--学习笔记
摘要 .NET Framework在过去十多年在跨平台上的尝试. .NET Core跨平台的实现有何不同? 基于 .NET Standard的平台兼容性是如何实现的? 讲师介绍 历史枷锁 .NET F ...
- Linux-解决jps查看正在运行的Java进程时显示:process information unavailable 问题
背景:jps全称为Java Virtual Machine Process Status Tool,是Java提供的一个查看当前用户有权访问的主机的Java进程情况的工具. 因为每一个Java程序都会 ...
- 开源.NetCore通用工具库Xmtool使用连载 - 发送邮件篇
[Github源码] <上一篇> 介绍了Xmtool工具库中的随机值类库,今天我们继续为大家介绍其中的邮件发送类库. 发送邮件是系统开发中经常需要的功能,广泛应用于消息通知.异常告警.内容 ...
- Apache HTTP Server、IIS反向代理设置
Apache HTTP Server 在 Apache 中设置反向代理,需要使用 mod_proxy 和相关的模块,如 mod_proxy_http.以下是一个基本的配置示例: 确保已经安装并启用了 ...