本文目錄一覽:
如何在js中去掉json數據中的轉義附
先把你的json數據貼出來:
然後json數據使用JSON.parse()有瀏覽器是不兼容JSON這個對象的
解決方案需要加載JSON對象庫的
所以暫時還是使用: eval(“(“+data+”)”);
json源數據字符有轉義符應該是必須的,你要看解析出來後是否有多餘的轉義符
js解析json字符串報錯解決方案(帶有轉義字符的json字符串)
場景:從後台請求回來的數據中帶有json格式的字符串,需要處理成json對象才能進行操作。
JSON.parse():
使用JSON.parse方法來解析json字符串。
報錯: Uncaught SyntaxError: Unexpected token } in JSON at position 30
Uncaught SyntaxError: Unexpected token ‘ in JSON at position 1
這種報錯是由於,json字符串的格式有問題,json字符串中對象的最後一個元素後面不可以再加’,’逗號了。比如'{ “name”: “cxh”, “sex”: “man”,}’使用JSON.parse()就會報錯,而且 在json字符串中鍵值對需要用雙引號引起來。
解決方案:使用eval()
報錯:SyntaxError: Unexpected token e in JSON at position 1
由於請求回來的json中帶有轉義字符,所以才會報這個錯誤。
解決方案:帶有轉義字符的json字符串使用json
json數據使用JSON.parse()有瀏覽器是不兼容JSON這個對象的,或者有的裏面有JSON.parse解析不了的東西,所以暫時還是使用: eval(“(“+data+”)”);
json源數據字符有轉義符應該是必須的,你要看解析出來後是否有多餘的轉義符
json轉字符串JSON.stringify總體效果還可以:
前導 0 和小數點報錯:SyntaxError: JSON.parse: expected ‘,’ or ‘}’ after property value
SyntaxError: JSON.parse: unterminated fractional number
Uncaught SyntaxError: Unexpected number in JSON at position 25
Uncaught SyntaxError: Unexpected token } in JSON at position 26
數字不能用 0 開頭,比如01,並且你的小數點後面必須跟着至少一個數字。
json字符串中需要轉義的字符有哪些
一:解析普通json
1:不帶轉化字符
格式{“type”:”ONLINE_SHIPS”,”message”:{“currentTime”:1400077615368,”direction”:0,”id”:1,”latitude”:29.5506,”longitude”:106.6466}}
JSONObject jsonObject = new JSONObject(jsonstr).getJSONObject(“message”);
System.out.println(“currentTime:”+jsonObject.get(“currentTime”));
System.out.println(“direction:”+jsonObject.get(“direction”));
System.out.println(“latitude:”+jsonObject.get(“latitude”));
System.out.println(“longitude:”+jsonObject.get(“longitude”));
jsonarray
JSONObject jo = ja.getJSONArray(“cargoList”).getJSONObject(0);
2:帶轉義字符的json格式
{“type”:”ONLINE_SHIPS”,”message”:”{\”currentTime\”:1400077615368,\”direction\”:0,\”id\”:1,\”latitude\”:29.5506,\”longitude\”:106.6466}”}
其實也很簡單,先把它轉化成字符串就可以了
JSONObject jsonObject = new JSONObject(jsonstr);
//先通過字符串的方式得到,轉義字符自然會被轉化掉
String jsonstrtemp = jsonObject.getString(“message”);
System.out.println(“message:”+jsonstrtemp);
jsonObject = new JSONObject(jsonstrtemp);
System.out.println(“currentTime:”+jsonObject.get(“currentTime”));
System.out.println(“direction:”+jsonObject.get(“direction”));
System.out.println(“latitude:”+jsonObject.get(“latitude”));
System.out.println(“longitude:”+jsonObject.get(“longitude”));
二:遍歷Json對象
JSONObject ports = ja.getJSONObject(“ports”);
IteratorString keys = ports.keys();
while(keys.hasNext()){
String key=keys.next();
String value = ports.getString(key);
}
三:使用Gjson,json與對象相互轉化
使用Gson輕鬆將java對象轉化為json格式
String json = gson.toJson(Object);//得到json形式的字符串
User user = gson.fromJson(json,User.class);//得到對象
轉化成list
import java.util.List;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.lc.function.Action;
import com.lc.models.Groups;
public class MapSearch {
private void ParseData(String _data)
{
Gson gson = new Gson();
ListGroups ps = gson.fromJson(_data, new TypeTokenListGroups(){}.getType());
System.out.println(ps.get(0).getGroup_name());
}
}
原創文章,作者:V52TR,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/127669.html