2015-10-02 3 views
1

Я использую Spring mvc для возврата объекта JSON в теги. У меня есть два следующих объектов JavaJson отображаемое имя объекта в списке

public class Tagset { 
    private String tag; 
    private String tagDisplayName; 
    private List<Case> caseList; 
} 

public class Case { 
    private String title; 
    private String url; 
} 

Ответ Я получаю:

{"tag":"Bluetooth", 
"tagDisplayName":"Bluetooth 101", 
"caseList":[ 
      {"title":"How do I update my Bluetooth?", 
      "url":"https://test.test.com"}, 
      {"title":"How do I delete my Bluetooth?", 
      "url":"https://test.test.com"} 
      ] 
} 

То, что я хотел бы для названия случая, чтобы показать для каждого случая объекта:

{"tag":"Bluetooth", 
"tagDisplayName":"Bluetooth 101", 
"caseList":[ 
      case:{"title":"How do I update my Bluetooth?", 
      "url":"https://test.test.com"}, 
      case:{"title":"How do I delete my Bluetooth?", 
      "url":"https://test.test.com"} 
      ] 
} 
+1

Вы можете найти этот полезный http://stackoverflow.com/questions/2435527/use-class-name-as-root-key-for-json-jackson-serialization – Filip

+0

дело должно быть в кавычках право ? – hevi

+0

Несмотря на то, что мы можем добавить «case» типа obj в «caseList», нет необходимости повторять JSON obj. caseList [i] .title даст тот же результат, что и caseList [0] .case.title. Кроме того, если ваш объект увеличится до большего объема данных, количество данных, передаваемых с сервера на UI, будет увеличиваться, и, следовательно, ваш JSON-выход будет как можно более минимальным и только для требуемых данных. – NightsWatch

ответ

0

То, что вы готовы иметь, возможно, но это будет не больше, чем тело json. Для этой цели вы можете написать свой собственный сериализатор и де-сериализатор.

0

Попробуйте добавить следующую строку кода для класса Case;

@JsonTypeInfo(include=As.WRAPPER_OBJECT, use=Id.NAME) 

Это часть API Джексона. Добавляя выше строку, я могу генерировать вывод как;

{ 
    "tag" : "Bluetooth", 
    "tagDisplayName" : "Bluetooth 101", 
    "caseList" : [ { 
    "Case" : { 
     "title" : "How do I update my Bluetooth?", 
     "url" : "https://test.test.com" 
    } 
    }, { 
    "Case" : { 
     "title" : "How do I delete my Bluetooth?", 
     "url" : "https://test.test.com" 
    } 
    } ] 
} 
Смежные вопросы