Пользовательский PrintFormatting для GSON - PullRequest
0 голосов
/ 23 января 2019

Привет всем!У меня возникли проблемы с GSON в отношении печати.GSON предлагает два варианта печати:

  1. Pretty Printing
  2. Compact Printing

Я собираюсь использовать измененную форму Pretty Printing и дажехотя документация говорит, что JsonPrintFormatter - это класс, который используется для изменения формата вывода.Я не могу найти этот класс в хранилище GSON!

Любые идеи о том, почему это так или иначе я могу изменить печать GSON !?Кроме того, любые библиотеки, используемые для изменения пробелов или formatting of JSON в языке Java, также будут полезны.

Симпатичная печать:

    {
  "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 Ответ

0 голосов
/ 24 января 2019

Что ж, пока это только работа, но это должно сработать для строк с только одним массивом. Мы постараемся сделать его более стабильным и способным обрабатывать более сложные структуры.

  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}
 ]
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...