Skip to content

Instantly share code, notes, and snippets.

@rj-hwang
Created July 22, 2015 07:18
Show Gist options
  • Save rj-hwang/7338a0a8473572de2645 to your computer and use it in GitHub Desktop.
Save rj-hwang/7338a0a8473572de2645 to your computer and use it in GitHub Desktop.
删除 json 字符串中的注释信息
/**
* 删除 json 字符串中的注释信息
* <p>标准的 json 是不允许带注释的,大部分 json 框架都不支持带注释 json 字符串的解析</p>
* @param source 原始 json 字符串
* @return 无注释信息的 json 字符串
*/
public String stripComment(String source) {
return source == null ? null : source.replaceAll("\\s*//.*|(?s)\\s*/\\*(.*?)\\*/[ \\t]*", "");
}
@Test
public void test() throws Exception {
String source = "// 中文\n \t// \ttest\n" +
"{\n" +
" // comment11\n" +
" k11: \"v11\",\n" +
" k12: \"v12\", \t// comment12\n" +
" //comment13 \t\n" +
" k13: \"v13\", \t// \tcomment13 \t\n" +
"\n" +
" /* comment21 */\n" +
" k21: \"v21\",\n" +
" k22: \"v22\", \t/* comment22 */\n" +
" /*comment23*/ \t\n" +
" k23: \"v23\", \t/* \tcomment23*/ \t\n" +
"\n" +
" /* line311\n" +
" * line312\n" +
" */\n" +
" k31: \"v31\",\n" +
" /** line321\n" +
" * line322\n" +
" */\n" +
" k32: \"v32\",\n" +
" /**\n" +
" * line331\n" +
" * line332\n" +
" */\n" +
" k33: \"v33\",\n" +
" ke:0\n" +
"}";
System.out.println("source=" + source);
String result = stripComment(source);
System.out.println("result=" + result);
JSONObject json = new JSONObject(result);
System.out.println("json=" + json);
}
@rj-hwang
Copy link
Author

==== source ====

// 中文
    //  test
{
  // comment11
  k11: "v11",
  k12: "v12",   // comment12
  //comment13   
  k13: "v13",   //  comment13   

  /* comment21 */
  k21: "v21",
  k22: "v22",   /* comment22 */
  /*comment23*/     
  k23: "v23",   /*  comment23*/     

  /* line311
   * line312
   */
  k31: "v31",
  /** line321
   * line322
   */
  k32: "v32",
  /**
   * line331
   * line332
   */
  k33: "v33",
  ke:0
}

@rj-hwang
Copy link
Author

==== result ====

{
  k11: "v11",
  k12: "v12",
  k13: "v13",
  k21: "v21",
  k22: "v22",
  k23: "v23",
  k31: "v31",
  k32: "v32",
  k33: "v33",
  ke:0
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment