项目中出现了这样一个问题,当一个Map被转成Json字符串后,由于业务需求,会将Map转为JsonObject,添加元素后,又转成Json字符串,最后再被包装到另一个Map里,被转成Json字符串发送给APP端,这个时候APP端反应结果中带有“\”转义字符,无法解析。
简化一下问题:
当一个Map被转成Json字符串后,被添加到另一个Map中,如果这个新的Map需要转成Json字符串格式,那么转化后,内部的这个Map转成的Json字符串,都会被加上“\”转义字符。
简单的模拟一下:
public static void main(String[] args) {
HashMap<String, Object> param = new HashMap<>();
param.put("userId", 66666);
param.put("username", "XXXX");
HashMap<String, String> pushMap = new HashMap<>();
pushMap.put("testKey01", "value01");
pushMap.put("testKey02", "value02");
param.put("pushJson", JSON.toJSONString(pushMap));
String pushJson = JSON.toJSONString(param);
System.out.println(pushJson);
格式化一下结果:
"pushJson":
"{\"testKey01\":\"value01\",\"testKey02\":\"value02\"}",
"userId":66666,
"username":"XXXX"
延伸测试一下,如果用JSONObject转Json字符串会不会有问题:
public static void main(String[] args) {
HashMap<String, Object> param = new HashMap<>();
param.put("userId", 66666);
param.put("username", "XXXX");
JSONObject pushObject = new JSONObject();
pushObject.put("testKey01", "value01");
pushObject.put("testKey02", "value02");
param.put("pushJson", pushObject.toJSONString());
String pushJson = JSON.toJSONString(param);
System.out.println(pushJson);
格式化一下结果:
"pushJson":
"{\"testKey01\":\"value01\",\"testKey02\":\"value02\"}",
"userId":66666,
"username":"XXXX"
用原本的Map和JSONObject:
public static void main(String[] args) {
HashMap<String, Object> param = new HashMap<>();
param.put("userId", 66666);
param.put("username", "XXXX");
HashMap<String, String> pushMap = new HashMap<>();
pushMap.put("testKey01", "value01");
pushMap.put("testKey02", "value02");
JSONObject pushObject = new JSONObject();
pushObject.put("testKey01", "value01");
pushObject.put("testKey02", "value02");
param.put("pushJson", pushMap);
String pushJson1 = JSON.toJSONString(param);
System.out.println(pushJson1);
param.put("pushJson", pushObject);
String pushJson2 = JSON.toJSONString(param);
System.out.println(pushJson2);
{"pushJson":{"testKey01":"value01","testKey02":"value02"},"userId":66666,"username":"XXXX"}
{"pushJson":{"testKey01":"value01","testKey02":"value02"},"userId":66666,"username":"XXXX"}
这样就不带转义字符了
而项目中,我是采用将JSON字符串转回Map,然后添加到新的Map中,再转成JSON字符串的方式解决这个问题的:
HashMap<String, Object> pushApp = new HashMap<>();
pushApp.put("userId", userList);
pushApp.put("pushType", pushType);
pushApp.put("pushJson", JSON.parseObject(message, HashMap.class));
String pushJson = JSON.toJSONString(pushApp);
当然上面带“\”转义字符的结果也是有办法解析的:
public static void main(String[] args) {
HashMap<String, Object> param = new HashMap<>();
param.put("userId", 66666);
param.put("username", "XXXX");
HashMap<String, String> pushMap = new HashMap<>();
pushMap.put("testKey01", "value01");
pushMap.put("testKey02", "value02");
param.put("pushJson", JSON.toJSONString(pushMap));
String pushJson = JSON.toJSONString(param);
System.out.println(pushJson);
JSONObject jsonObject = JSONObject.parseObject(pushJson);
JSONObject jsonData = jsonObject.getJSONObject("pushJson");
System.out.println("pushJson: " + jsonData);
String value1 = jsonData.getString("testKey01");
System.out.println("key: testKey01 value: " + value1);
{"pushJson":"{\"testKey01\":\"value01\",\"testKey02\":\"value02\"}","userId":66666,"username":"XXXX"}
pushJson: {"testKey01":"value01","testKey02":"value02"}
key: testKey01 value: value01
2019-09-12
HashMap jsonMap = JSON.parseObject(pushJson,HashMap.class);
String resultJson = String.valueOf(jsonMap.get("pushJson"));
System.out.println(resultJson);
反解析的时候,还是可以正常解析出来,不需要转成jsonObject也可以
{"pushJson":"{\"testKey01\":\"value01\",\"testKey02\":\"value02\"}","userId":66666,"username":"XXXX"}
{"testKey01":"value01","testKey02":"value02"}
项目中出现了这样一个问题,当一个Map被转成Json字符串后,由于业务需求,会将Map转为JsonObject,添加元素后,又转成Json字符串,最后再被包装到另一个Map里,被转成Json字符串发送给APP端,这个时候APP端反应结果中带有“\”转义字符,无法解析。简化一下问题:当一个Map被转成Json字符串后,被添加到另一个Map中,如果这个新的Map需要转成Json字符串格式,那么转化...
今天写小程序遇到一个问题一直解决不了。
起因是使用小程序模板需要发送json数据。然后我直接使用了JsonObject进行了json拼接。
最后toString 转换成json字符串发送数据。虽然最后发送成功了但是微信消息模板显示的数据不对。
data部分的数据都没有显示出来。
最后找到原因是因为toString 后内容增加了转义符导致的。
最后解决办法是先用hashmap储存然后直接转换成jso...
在JS中快速转义JSON字符串。
手动转义小的JSON字符串比使用本机更快。
主要焦点是非常快速地检查不需要转义的字符串,同时还改善了转义自身或至少不低于JSON.stringify的条件。
运行基准测试( npm run benchmark )显示出以下好处:
节点./基准
JSON short non escaped x 2 , 884 , 878 ops/sec ± 2.25 % ( 95 runs sampled)
this short non escaped x 13 , 082 , 026 ops/sec ± 1.47 % ( 93 runs sampled)
JSON short full escape 1 x 2 , 768 , 607 ops/sec ± 1.85 % ( 86 runs sampled)
this short full es
import org.apache.commons.lang.StringEscapeUtils;
public static void main(String[] args) {
CustomerDataDto custo...
我是小玉,一个平平无奇的小天才!
python中对于字符串的表示和其他语言基本一样,都是用string来表示字符串,不同的是,python在使用字符串的时候同样不需要定义。
字符串的表示:
先举一个例子:
str = "hello world!"
这就是一句python的字符串表达式。
需要注意的是,在使用字符串的时候,我们需要将字符串用引号引起来,单引号和双引号均可。
注: 1、这里的引号不能混合使用
str = "hello world!'
2、相同类型的引号不可嵌套使用。
str = "hello "this" world!"
3、引号不可以换行使用。
// 参数集合
Map<String,String> headerMap = new HashMap<String, String>();
headerMap.put("key1","key1");
headerMap.put("key2","key2");
// 此时如果直接用下面的方法就会出现"\
JSONValue.toJSONString(headerMap);
更正后的写法:
// 参数集合
JSONObject jsonObject = new JSO
问题关于json 字符串中带有反斜杠的问题
一、 原因
前端在使用了两次stringify({}) 才会出现反斜杠,由于后端要求要传入一个对象和两个字符串,都要是json类型,对象是动态创建的。
二、使用步骤
1.代码示例
代码如下(示例):
let goodsMap = new Map()
for (var i = 0; i < that.myChartList.length; i++
@Slf4j
public class LiJingDeliverApi {
public RetStatus<Object> deliver(CustomerPlaformShopVO customerPlaformVO, OrderBondedInfoVO orderBondedInfoVO) {
RetStatus<Object> retStatus = new RetStatus<
第一种alibaba falstjson:
1.Map转JSON
Map<String, Object> map = new HashMap<String, Object>();
map.put("a", "a");
map.put("b", "123");
JSONObject json = new JSONObject(map);
2.map转string
Map<String, Object> map =
最近发现了一个问题,通过查看用户的活跃度发现了奇怪的事情,有的用户访问某一个接口没有问题,而一些奇葩用户访问这一接口就是不成功,经过查看,原来是Android系统4.4以下map转换json的时候出现了问题,具体是什么了,下面我们来分析分析。
第一,利用”org.json.JSONObject”下的JsonObject 时,4.4以下的系统出现“=”的问题。比如: Map<String,
Map<String, String> map = new HashMap<String, String>();
map.put("1","1");
map.put("2","2");
使用JSONObject就可以将map直接转为json
package test;
import java.io.File;
import java.util.HashMap;
import java.util.Map;
import org..
```javascript
const jsonString = '{"name":"John Doe","age":30,"city":"New York\\"s"}';
const unescapedJsonString = jsonString.replace(/\\"/g, "'");
console.log(unescapedJsonString);
// 输出:{"name":"John Doe","age":30,"city":"New York's"}
这里使用了正则表达式 `/\\"/g`,表示匹配所有的 `\"` 转义字符,并使用单引号字符 `'` 替换它们。