[js] 处理字符串换行造成的json解析失败

需求:从数据库某个字段取出字符串出来,转为json,结果发现报错为 解析失败,发现是因为取出的字符串换行导致,现在需要将字符串里面的换行替换为‘‘,使字符串可依成功解析成json对象。

技术:依靠replace函数实现

----------------------------------------
数据库里面的
----------------------------------------

{"choiceList":{"A":"<p>

<span>spare</span>

</p>","B":"<p>

<span>fast&nbsp;</span>

</p>","C":"<p>

<span>moderate</span>

</p>","D":"<p>

<span>moral</span>

</p>"}}

----------------------------------------
去掉多余空格后的样子
----------------------------------------

{"choiceList":{"A":"<p><span>spare</span></p>","B":"<p><span>fast&nbsp;</span></p>","C":"<p><span>moderate</span></p>","D":"<p><span>moral</span></p>"}}

----------------------------------------
最后的解析成功的
----------------------------------------

{
    "choiceList": {
        "A": "<p><span>spare</span></p>",
        "B": "<p><span>fast </span></p>",
        "C": "<p><span>moderate</span></p>",
        "D": "<p><span>moral</span></p>"
    }
}

关键代码:

var json=异常字符串
json = json.replace(/\n/g,"").replace(/\r/g,"");//去掉字符串中的换行符
json = json.replace(/\n/g,"").replace(/\s|\xA0/g,"");//去掉字符串中的所有空格
var jsonObj= eval(‘(‘ + json + ‘)‘); //将字符串解析成json对象

console.log(jsonObj);

测试:

http://www.w3school.com.cn/tiy/t.asp?f=jquery_hide

<!DOCTYPE html>
<html>
<head>
<script src="/jquery/jquery-1.11.1.min.js">
</script>
<script>
  $(document).ready(function(){
       var json=‘{"choiceList":           {"A2":"<p>\n\n<span>                  spare</span>\n\n</p>","B":"<p>\n\n<span>fast&nbsp;</span>\n\n</p>","C":"<p>\n\n<span>              moderate</span>\n\n</p>","D":"<p>\n\n<span>moral</span>\n\n</p>"}}‘;
     json = json.replace(/\n/g,"").replace(/\r/g,"").replace(/\s|\xA0/g,"");
     var jsonObj= eval(‘(‘ + json + ‘)‘);
     console.log(jsonObj);
  });
</script>
</head>
<body>
<p>请在console控制台看结果</p>
</body>
</html>

原文地址:https://www.cnblogs.com/avivaye/p/9298265.html

时间: 2024-10-11 22:53:03

[js] 处理字符串换行造成的json解析失败的相关文章

iis上json解析失败404

控制面板->打开或关闭windows功能->Internet信息服务->万维网服务->应用程序开发功能,勾选上“.net扩展性”和“ASP.NET”,保存后,重启IIS服务器.MIME设置:在IIS的站点属性的HTTP头设置里,选MIME 映射中点击”文件类型”-”新类型”,添加一个文件类型: 关联扩展名:*.json 内容类型(MIME):application/x-javascriptScript Map Handler设置:还是在IIS的站点属性里,”主目录”-”应用程序设置

JSON解析问题

这是data.chatFileModelJson = [dic valueForKey:@"Text"]; { Content = "s\U5de5\U56fd\U4e2d\U53e5\U53f7\U4e2d\U56fdd"; FileKey = ""; Url = "http://m.im2x.com/d"; } 想要不转码的string json: { "Content": "下雨了?what

JSON 解析中遇到的坑&#128557;

最近做加解密遇到一个很"奇葩的问题",解析服务端加密后的字符串 序列化 时一直报错 "json解析失败:Error Domain=NSCocoaErrorDomain Code=3840 "Garbage at end." UserInfo={NSDebugDescription=Garbage at end.}" 既然出现问题就开始找原因,根据错误分析原因,大概是 JSON 格式字符串有问题,搜了很多答案,被误导了. p.p1 { margin

js中解析json对象:JSON.parse()用于从一个字符串中解析出json对象, JSON.stringify()用于从一个对象解析出字符串。

JSON.parse()用于从一个字符串中解析出json对象. var str = '{"name":"huangxiaojian","age":"23"}' ; JSON.parse(str); // age: "23" name: "huangxiaojian" 2.JSON.stringify()用于从一个对象解析出字符串. var a = {a:1,b:2 }; JSON.str

js中将字符串转换成json的方式

1.eval 方式解析,实际中用的还是比较少 function evalJson(str){ var json = eval('(' + str + ')'); return json; } 2.使用js 的全局对象 JSON 对象 function isJson(str){ return JSON.parse(str); } 3.还有就是jq中 使用的 $.pareJSON $.parseJSON(str); 4.看jq源码和一些人的写法了解一种new Function function ne

servlet+ajax+json字符串后台传入,前端解析并把数据循环填入表格实例

写在前面:1.源代码来源于博客http://blog.sina.com.cn/u/2904067371 ,在此基础上对于前端代码稍作更改,把传过来的数据解析并传入表格2.json解析,用eval()3.写入表格 table.rows[i].cells[j].innerHTML4.导入java中json应用的jar包(如果没有导入jar包或者包不全就不会有import net.sf.json.JSONArray;import net.sf.json.JSONObject;JSONArray.JSO

node.js中的字符串、对象和json处理函数

querystring.parse() 将字符串转成对象,就是把url上带的参数串转成数组对象. querystring.parse(str, [sep], [eq], [options]) 接收参数: str 欲转换的字符串 sep 设置分隔符,默认为 ‘&' eq 设置赋值符,默认为 ‘=' [options] maxKeys 可接受字符串的最大长度,默认为1000 querystring.parse('foo=bar&baz=qux&baz=quux&corge')

js 实现动态key value(JSON字符串注意事项:key和value都要用双引号,官网指定用双引号)

1.JSON字符串注意事项:key和value都要用双引号,官网指定用双引号,如下: var mapStr='{"a":"a","b":"b"}'; var map=JSON.parse(mapStr); 如此通过拼接字符串,JSON解析获得KeyValue var str='a'; map[str];//输出a 2.也是通过拼接字符串方式获得keyvalue,使用eval方法解析成数组,注意是数组 var mapStr='[

ios 解决数据请求json解析字典后,由于java某些类库转换json字符串后出现键值为&lt;null&gt;无法保存在userDefault的问题

解决数据请求json解析字典后,由于java某些类库转换json字符串后出现键值为<null>无法保存在userDefault. 打印下得到的字典数据: “username”=<null> 此时如果将字典保存到userDefault中会报错 所以需要遍历字典将其替换 for (NSString*s in [Dict1 allKeys]) { if ([Dict1[s] isEqual:[NSNull null]]) { [Dict1 setObject:@""