【急】后台怎么处理JSON数据中含有双引号??

天殇月痕 2013-09-03 11:08:20
注意是后台,不是用js
另外我这个json是直接取得别人的传过来的字符串,不是我自己拼写的,所以我自己不能做到转义去拼接

如果针对

{"id":"FZ13082900190","type":"人口计生","title":"现在"新婚教育卡"在哪办","time1":"13-08-29","time2":"08-29","from":"网站"}

这个我直接拿到的字符串,关键的就是红色字体的
...全文
54942 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
baidu_18984059 2016-02-25
  • 打赏
  • 举报
回复
val = val.replace(/"/g,"\'\'"); 讲英文双引号,替换为两个英文单引号也可以
CrazyDemo 2016-02-17
  • 打赏
  • 举报
回复
#12楼你真是解决大问题啦给你好评!!!
Ny-6000 2015-10-15
  • 打赏
  • 举报
回复
这样拼json字符串 json = "{myKey:" + value.replace("\"","\\\"") + "}" 这个解决了我的问题...
融化的雪 2015-05-22
  • 打赏
  • 举报
回复
引用 12 楼 ymlkl 的回复:
自己写个方法 把属性值中的双引号改成中文引号就可以了
private static String jsonString(String s){
			char[] temp = s.toCharArray();		
			int n = temp.length;
			for(int i =0;i<n;i++){
				if(temp[i]==':'&&temp[i+1]=='"'){
						for(int j =i+2;j<n;j++){
							if(temp[j]=='"'){
								if(temp[j+1]!=',' &&  temp[j+1]!='}'){
									temp[j]='”';
								}else if(temp[j+1]==',' ||  temp[j+1]=='}'){
									break ;
								}
							}
						}	
				}
			}		
			return new String(temp);
		}
干得漂亮,非常感谢
杏少 2015-01-28
  • 打赏
  • 举报
回复
12楼的方法很给力
wzc1981 2014-12-30
  • 打赏
  • 举报
回复
真心用上了!!感谢!!
ymlkl 2014-12-16
  • 打赏
  • 举报
回复
自己写个方法 把属性值中的双引号改成中文引号就可以了
private static String jsonString(String s){
			char[] temp = s.toCharArray();		
			int n = temp.length;
			for(int i =0;i<n;i++){
				if(temp[i]==':'&&temp[i+1]=='"'){
						for(int j =i+2;j<n;j++){
							if(temp[j]=='"'){
								if(temp[j+1]!=',' &&  temp[j+1]!='}'){
									temp[j]='”';
								}else if(temp[j+1]==',' ||  temp[j+1]=='}'){
									break ;
								}
							}
						}	
				}
			}		
			return new String(temp);
		}
天殇月痕 2013-09-03
  • 打赏
  • 举报
回复
引用 5 楼 5653325 的回复:
你这个字符串不是标准的JSON字符串。 所以不能用JSON来做解析,只能自己手动先做一些替换,才能解析 比如用正则把双引号里面的双引号给替换成别的符合,这样就符合规范了。
这个正则怎么写??求指教·····
phoebuswei 2013-09-03
  • 打赏
  • 举报
回复
引用 楼主 whw6263989 的回复:
string a = {"id":"FZ13082900190","type":"人口计生","title":"现在"新婚教育卡"在哪办","time1":"13-08-29","time2":"08-29","from":"网站"} a = a.split(,)[2].split(:)[1] b = a.substring(0,2)+a.substring(4,8)+a.substring(6,9) 就是数个数吧“的下标空过去
踏平扶桑 2013-09-03
  • 打赏
  • 举报
回复
你这个字符串不是标准的JSON字符串。 所以不能用JSON来做解析,只能自己手动先做一些替换,才能解析 比如用正则把双引号里面的双引号给替换成别的符合,这样就符合规范了。
天殇月痕 2013-09-03
  • 打赏
  • 举报
回复
那有没有办法取到所有title的值,只要删除title里面多出来的双引号就行了~~~~
EnForGrass 2013-09-03
  • 打赏
  • 举报
回复
你这个不好处理,根本就不是json了
天殇月痕 2013-09-03
  • 打赏
  • 举报
回复
引用 1 楼 zxy397472251 的回复:
[quote=引用 楼主 whw6263989 的回复:] 注意是后台,不是用js 另外我这个json是直接取得别人的传过来的字符串,不是我自己拼写的,所以我自己不能做到转义去拼接 如果针对 {"id":"FZ13082900190","type":"人口计生","title":"现在"新婚教育卡"在哪办","time1":"13-08-29","time2":"08-29","from":"网站"} 这个我直接拿到的字符串,关键的就是红色字体的
这个需要源头处理,找提供接口的人 让他提供标准的JSON字符串给你不就行了·[/quote] 现在这个关键的就是联系这个源头的人很麻烦,希望的是自己能解决这个问题把~要不然就弄得太复杂了
CqCoder 2013-09-03
  • 打赏
  • 举报
回复
引用 楼主 whw6263989 的回复:
注意是后台,不是用js 另外我这个json是直接取得别人的传过来的字符串,不是我自己拼写的,所以我自己不能做到转义去拼接 如果针对 {"id":"FZ13082900190","type":"人口计生","title":"现在"新婚教育卡"在哪办","time1":"13-08-29","time2":"08-29","from":"网站"} 这个我直接拿到的字符串,关键的就是红色字体的
这个需要源头处理,找提供接口的人 让他提供标准的JSON字符串给你不就行了·
天殇月痕 2013-09-03
  • 打赏
  • 举报
回复
嗯,最终还是让对方改了~谢谢大家
jrl5365 2013-09-03
  • 打赏
  • 举报
回复
这个是对方的问题了!这样提供的json格式本身就是错误的!!
clark_kidd 2013-09-03
  • 打赏
  • 举报
回复
让对方改,或者屏蔽双引号
clark_kidd 2013-09-03
  • 打赏
  • 举报
回复
还用正则?搞笑啊? 这分明是未转义bug,一个有错误的字符串拿来做正则更正?哪有这种道理? 常识上来说,造房子先选好适用的建材,然后组装,哪里会是 造完了,再拆除坏掉设计不合理的建材这种思路? 应该是 内容->转义->json 而不是 内容->json->排除不合理字符串 哪有这种写法? 这样拼json字符串 json = "{myKey:" + value.replace("\"","\\\"") + "}"

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧