Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带正则表达式的java JSON字符串格式_Java_Json_Regex - Fatal编程技术网

带正则表达式的java 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编写的

对于给定的纯JSON数据,请执行以下格式化:

  • 键中的所有特殊字符替换为下划线
  • 删除双引号
  • 将:替换为=
  • 示例:

    JSON数据:{“no/me”:“139.82”,“gc.pp”:“\u0000\u000”,…}

    格式化后:no_me=“139.82”,gc_pp=“\u0000\u000”


    用正则表达式可以吗?或任何其他单一命令执行

    一个单独的正则表达式来处理整个更改可能会有些过分。我认为您可以编写类似的代码:

    (注意:因为我没有用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中实现类似的东西:-)