带正则表达式的java JSON字符串格式
对于给定的纯JSON数据,请执行以下格式化:带正则表达式的java JSON字符串格式,java,json,regex,Java,Json,Regex,对于给定的纯JSON数据,请执行以下格式化: 将键中的所有特殊字符替换为下划线 删除键双引号 将:替换为= 示例: JSON数据:{“no/me”:“139.82”,“gc.pp”:“\u0000\u000”,…} 格式化后:no_me=“139.82”,gc_pp=“\u0000\u000” 用正则表达式可以吗?或任何其他单一命令执行 一个单独的正则表达式来处理整个更改可能会有些过分。我认为您可以编写类似的代码: (注意:因为我没有用java编写代码,所以我的示例是用javascript编写的
用正则表达式可以吗?或任何其他单一命令执行 一个单独的正则表达式来处理整个更改可能会有些过分。我认为您可以编写类似的代码: (注意:因为我没有用java编写代码,所以我的示例是用javascript编写的,只是为了让您了解它)
var json_data='{“no/me”:“139.82”,“gc.pp”:“0000000”,“foo”:“bar”}';
log(json_数据);
var data=JSON.parse(JSON_数据);
var out='';
用于(数据中的var x){
var clean_x=x.更换(/[^a-zA-Z0-9]/g,“”);
如果(out!='')out+=',';
out+=clean_x+'=“'+数据[x]+'”;
}
控制台。注销代码>我已经很长时间没有使用Java了,但我认为您需要这样的东西。
我假设你在这里指的是specialchars
中的“所有非单词字符”
import java.util.regex.*;
String JsonData = '{"no/me": "139.82", "gc.pp": "\u0000\u000", ...}';
// remove { and }
JsonData = JsonData.substring(0, JsonData.length() - 1);
try {
Pattern regex = Pattern.compile("(\"[^\"]+\")\\s*:"); // find the keys, including quotes and colon
Matcher regexMatcher = regex.matcher(JsonData);
while (regexMatcher.find()) {
String temp = regexMatcher.group(1); // "no/me":
String key = regexMatcher.group(2).replaceAll("\\W", "_") + "="; // no_me=
JsonData.replaceAll(temp, key);
}
} catch (PatternSyntaxException ex) {
// regex has syntax error
}
System.out.println(JsonData);
导入java.util.regex.*;
字符串JsonData='{“no/me”:“139.82”,“gc.pp”:“\u0000\u000”,…}';
//删除{和}
JsonData=JsonData.substring(0,JsonData.length()-1);
试一试{
Pattern regex=Pattern.compile(“(\”[^\“]+\”\\s*:”;//查找键,包括引号和冒号
Matcher regexMatcher=regex.Matcher(JsonData);
while(regexMatcher.find()){
String temp=regexMatcher.group(1);/“no/me”:
String key=regexMatcher.group(2).replaceAll(\\W“,“”)+“=”;//否=
JsonData.replaceAll(临时、键);
}
}捕获(模式语法异常){
//正则表达式有语法错误
}
System.out.println(JsonData);
请指定输入是否可以具有嵌套结构(如数组)或者,如果它和给定的输入一样简单。另外,你能指定什么是“特殊字符”吗?可能是任何非A-Z0-9吗?把它放到一个命令中的驱动力是什么?这是你必须经常从命令行做的事情吗?我建议你在一个方法中编写一个小解析器并调用它。你有一行代码,没有如果代码中有一堆regex垃圾。这是Javascript,OP在问一个Java问题。在OP中添加了一个警告。任何人都可以在Java中实现类似的东西:-)