① java正則轉義json中雙引號
你的JSON本來就有問題吧,怎麼可能引號裡面還有引號?如果JSON是JS中的,那麼雙綽號裡面可以有單引號,單引號裡面也可以有雙引號。就像{"地址":"北京市海淀區'中關村南大街'8號"}.
如果JSON在JAVA中,那就用\轉義一下。{"地址":"北京市海淀區\"(雙引號)中關村南大街\"(雙引號)8號"}
或者裡面的雙引號改成單引號也行{"地址":"北京市海淀區'(單引號)中關村南大街'(單引號)8號"}
② java 怎麼將string轉為json數據
string轉json有三種方法:
第一種:string直接轉json
String json = "{"2":"efg","1":"abc"}"; JSONObject json_test =
JSONObject.fromObject(json); 將string的雙引號轉義即可,適用於字元串較短的
第二種:將string轉為list後轉為json
Listlist = new ArrayList(); list.add("username");
list.add("age"); list.add("sex"); JSONArray array = new JSONArray();
array.add(list);
可以使用list的add函數將需要的字元串拼接即可,但是這個只能使用jsonarry
第三種:將string轉為map後轉為json
Mapmap = new HashMap();
map.put("1", "abc");
map.put("2", "efg");
JSONArray array_test = new JSONArray();
array_test.add(map);
JSONObject jsonObject = JSONObject.fromObject(map);
這里使用map就可以將字元串轉化為JSONArray或者JSONObject都可以,但是這里的鍵不能使用int型
③ json格式的字元串轉換為java對象
先來解釋反斜杠幹嘛用的:
你既然提到了是json字元串,對,請注意字元串三個字。什麼是字元串?兩個引號之間的就是一個字元串比如:"abcdefg"這就是字元串.
假如我有個json對象:
{
"message" : "success"
}
那麼問題來了,怎麼把它放到一個String字元串對象里呢?
那麼我們都會這么做:
Stringjson="{"message":"success"}";
對吧?但是這么做對嗎?前面說過了,字元串是引號開始,引號結尾的,再看一眼這么做對嗎?
StringjsonStr="{"message":"success"}";
Infoinfo=JSON.parseObject(jsonStr,Info.class);
System.out.println(info.getMessage());
這里的fastjson只是處理json的框架中的一個,此外還有jackson、Gson等等,可以根據自己的需求選擇一個就可以了。
④ java : json 過濾不合法字元的工具包工具類工具
json中沒有自帶的過濾不合法字元的工具類,需要用戶自己編寫。
將源數據中的'、"、\\、空格、換行等都替換成轉義符,這樣你拼接的json數據就是正常的,顯示出來格式和資料庫中的一樣。
function valueReplace(v) {
if (v.indexOf("\"") != -1) {
v = v.toString().replace(new RegExp('(["\"])', 'g'), "\\\"");
}
else if (v.indexOf("\\") != -1)
v = v.toString().replace(new RegExp("([\\\\])", 'g'), "\\\\");
return v;
}