有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

GSON的java自定义打印格式

我和GSON在印刷方面有点问题。GSON在打印方面有两种选择

  1. 漂亮的印刷品
  2. 紧凑印刷

我打算使用一种经过修改的漂亮打印形式,尽管documentationJsonPrintFormatter是用于修改输出格式的类。我在GSON存储库中找不到那个类

你知道为什么会这样吗?或者我可以修改GSON打印? 除此之外,任何用于修改Java语言中JSON的间距或格式的库都会很有帮助

漂亮的印花:

    {
  "classname": "something",
  "type": "object",
  "version": 1,
  "properties": [
    {
      "propertyname": "something1",
      "type": "String",
      "length": 255
    },
    {
      "propertyname": "something2",
      "type": "Date",
      "length": 10
    }
  ]
}

紧凑打印:

{"classname":"something","type":"object","version":1,"properties":[{"propertyname":"something1","type":"String","length":255},{"propertyname":"something2","type":"Date","length":10}]}

我的印刷风格:

{
  "classname": "something",
  "type": "object",
  "version": 1,
  "properties": [
    {"propertyname": "something1","type": "String","length": 255},
    {"propertyname": "something2","type": "Date","length": 10}
  ]
}

共 (1) 个答案

  1. # 1 楼答案

    嗯,目前这只是一项正在进行的工作,但对于只有一个数组的字符串来说,这应该可以做到。将研究如何使其更稳定,能够处理更复杂的结构

      private static String reformat(String og){
        String reformattable = og;
        String[] parts = reformattable.split("\\[",2);
        String arrayPart = parts[1];
        String arrayOnly = arrayPart.split("]",2)[0];
        reformattable = arrayOnly.replaceAll("\\{\n","{");
        reformattable = reformattable.replaceAll("\",\n", "\\\",");
        reformattable = reformattable.replaceAll(" +"," ");
        reformattable = reformattable.replaceAll("\\{ ","   {");
        reformattable = reformattable.replaceAll("\n }","}");
    
        return og.replace(arrayOnly,reformattable);
    } 
    

    结果应该是这样的(至少对于我的简单类):

    {
     "classname": "test",
     "properties": [
       {"propertyname": "1", "length": 1},
       {"propertyname": "1", "length": 1}
     ]
    }