自己实现方式,感觉有点繁琐
public static String getValidateJson(String json)
{
int index = 0;
StringBuilder sb = new StringBuilder();
for(;;)
{
int temp = json.indexOf("\":",index);
if(-1==temp)
{
sb.append(json.substring(index));
break;
}
char tc = json.charAt(temp+2);
sb.append(json.substring(index, temp+2));
if(tc== '{'||tc=='['||tc=='"')
{
index = temp + 2;
continue;
}
else
{
sb.append("\"");
int index2 = json.indexOf("}",temp+2);
sb.append(json.substring(temp+2, index2));
sb.append("\"");
index = index2;
}
}
return sb.toString();
}
public static String getValidateJson(String json)
{
int index = 0;
StringBuilder sb = new StringBuilder();
for(;;)
{
int temp = json.indexOf("\":",index);
if(-1==temp)
{
sb.append(json.substring(index));
break;
}
char tc = json.charAt(temp+2);
sb.append(json.substring(index, temp+2));
if(tc== '{'||tc=='['||tc=='"')
{
index = temp + 2;
continue;
}
else
{
sb.append("\"");
int index2 = json.indexOf("}",temp+2);
sb.append(json.substring(temp+2, index2));
sb.append("\"");
index = index2;
}
}
return sb.toString();
}
解决方案 »
- 多线程编程的问题
- 编写一个Java应用程序,使用 RandomAccessFile流统计 Hello.txt中的单词
- JAVA io 读写速度方面的问题 为啥笔记本比服务器快一倍
- 什么是反射(reflective)?什么时候必需用到反射?哪位高手给个列子说明呀?
- ###【面试题答案】输出1,2,2,3,4,5的所有排列组合,4不能在第三位,3和5不能相邻
- 关于用ListIterator遍历,修改,删除ArrayList的同步问题
- 关于jar
- 过两天可能要用JAVA~开发一个什么工程项目管理的什么软件~具体怎么样我还不知道~
- 【新手提问】JDBC使用第三方dbutils包操纵mysql,查询出来的结果是空的
- 用Java Socket制作聊天室怎么实现收发消息不冲突?
- 正则表达式能搞定这个不?
- 线程中调用wait方法和sleep方法,很简单,都进来看看
System.out.println(head.replaceAll("\"retcode\":(.){1}", "\"retcode\":\"$1\""));
不只是retcode一个,还可能有其他的像"setcode":0,"age":22,"id":111,等等只是他们的值没加引号的要加引号,
System.out.println(head.replaceAll("(\\d+)", "\"$1\""));
感谢提供的方法 $1是第一个捕获组的意思吧,
我想知道为什么改成这样子就不行了
head.replaceAll("(^(\\{|\\[|\")&&\\d+)", "\"$1\"")
这个写的什么意思
例如
{"ls1":{"id":123,"name":aa,"age":22},"ls2":{"id":124,"name":bb,"age":24},"ls3":{"id":125,"name":cc,"age":21}}
要改成{"ls1":{"id":"123","name":"aa","age":"22"},"ls2":{"id":"124","name":"bb","age":"24"},"ls3":{"id":"125","name":"cc","age":"21"}}这样
例如
{"ls1":{"id":123,"name":aa,"age":22},"ls2":{"id":124,"name":bb,"age":24},"ls3":{"id":125,"name":cc,"age":21}}
要改成{"ls1":{"id":"123","name":"aa","age":"22"},"ls2":{"id":"124","name":"bb","age":"24"},"ls3":{"id":"125","name":"cc","age":"21"}}这样试了是不可以的
String json="{\"ls1\":{\"id\":123,\"name\":aa,\"age\":22},\"ls2\":{\"id\":124,\"name\":bb,\"age\":24},\"ls3\":{\"id\":125,\"name\":cc,\"age\":21}}";
json=json.replaceAll(":\\s*([^\\[{\"])(.*?)(?=[,|\\]}])", ":\"$1$2\"");
System.out.println(json);
强大,可以解释一下$1$2这个么
根据json的特点都key:value的形式也就是:后面可以是有空格或无空格的跟着不能是{或者[或者已经有" 因为这类的值都是json对象或json数组或者已经有"了这样的无需加"",也就是:后面要排除掉这些紧跟着可以是任意的字符当值结束要么是跟着,要么是]要么是}所以就得出正则
:\\s*([^\\[{\"])(.*?)(?=[,|\\]}]至于$1是获取第一个组的就是([^\\[{\"])$2是第二个组的就是(.*?)如果没有$1只有$2那么值就会少掉开头的一个字符了
例如
{"ls1":{"id":123,"name":aa,"age":22},"ls2":{"id":124,"name":bb,"age":24},"ls3":{"id":125,"name":cc,"age":21}}
要改成{"ls1":{"id":"123","name":"aa","age":"22"},"ls2":{"id":"124","name":"bb","age":"24"},"ls3":{"id":"125","name":"cc","age":"21"}}这样试了是不可以的我还以为你只要数字加呢,字符也加就如同猫的那个一样。
$1 $2 代表的是grouphttp://baike.baidu.com/link?url=rlVqWRmPxZivbMpVCUMkml1uMzX2lmZpOmX2g64Rh6Y6McTQ9ObcKBNf_ih5PJ68
强大,可以解释一下$1$2这个么
根据json的特点都key:value的形式也就是:后面可以是有空格或无空格的跟着不能是{或者[或者已经有" 因为这类的值都是json对象或json数组或者已经有"了这样的无需加"",也就是:后面要排除掉这些紧跟着可以是任意的字符当值结束要么是跟着,要么是]要么是}所以就得出正则
:\\s*([^\\[{\"])(.*?)(?=[,|\\]}]至于$1是获取第一个组的就是([^\\[{\"])$2是第二个组的就是(.*?)如果没有$1只有$2那么值就会少掉开头的一个字符了原来是这样感谢解答