2015-03-19 2 views
1

Как построить массив JSON ниже с использованием Spring MVC? Я хочу вернуть приведенный ниже массив JSON как ответ json, используя Responsebody. Или я могу использовать api javax.json, чтобы построить ниже массив JSON.Создание массива json с использованием пружины mvc

{ 
         'DemoOrg' : { 
          'West' : { 
           'Alaska' : { 
            'Denali' : [ "Unit1", "Unit2" ], 
            'Anchorage' : [ "Unit3", "Unit4" ], 

           }, 
           'Arizona' : { 
            'CottonWood' : [ "Unit5", "Unit6" ], 
            'Winslow' : [ "Unit7", "Unit8" ], 
           } 

          } 

         }, 
         'TestOrg' : { 
          'SouthWest' : { 
           'Missouri' : { 
            'Kansas City' : [ "Unit9", "Unit10" ], 
            'Columbia' : [ "Unit11", "Unit12" ], 

           }, 
           'Arkansas' : { 
            'Baxer' : [ "Unit13", "Unit14" ], 
            'Benton' : [ "Unit15", "Unit16" ], 
           } 

          } 

         } 
        }; 

ответ

0

Прежде всего это добавить в файл pom.xml:

<!-- Jackson JSON Mapper --> 
<dependency> 
      <groupId>com.fasterxml.jackson.core</groupId> 
      <artifactId>jackson-core</artifactId> 
      <version>2.4.1</version> 
</dependency> 
<dependency> 
      <groupId>com.fasterxml.jackson.core</groupId> 
      <artifactId>jackson-databind</artifactId> 
      <version>2.4.1</version> 
</dependency> 
<dependency> 
      <groupId>com.fasterxml.jackson.core</groupId> 
      <artifactId>jackson-annotations</artifactId> 
      <version>2.4.1</version> 
</dependency> 

Затем вы должны определить MessageConverter. Так как вы используете аннотированных конфигурации она должна выглядеть следующим образом

@Configuration 
@EnableWebMvc 
@EnableTransactionManagement 
@ComponentScan(basePackages = "com.myapp.*") 
public class AppConfiguration extends WebMvcConfigurerAdapter { 

    // you config stuff 

    @Override 
    public void configureMessageConverters(List<HttpMessageConverter<?>> converters) { 
     converters.add(new ResourceHttpMessageConverter()); 
     converters.add(new MappingJackson2HttpMessageConverter()); 
     super.configureMessageConverters(converters); 
    } 
} 

MappingJackson2HttpMessageConverter превратит ваш объект в JSON.

+0

Я не хочу использовать jackson вместо этого, я хочу оставить его весной, чтобы преобразовать его как массив JSON – VijayM

+0

@VijayM не имеет значения, какую библиотеку вы используете. Если ваш весенний выпуск содержит собственную библиотеку сериализации json, поэтому не импортируйте jackson. – dit

0

Чтобы вернуть массив как ответ JSON, вам необходимо создать класс модели, который содержит значения объекта json. Пусть имя класса - ModelOrg. Затем вы можете вернуть ответ JSON, используя следующий код:

@RequestMapping(value="/orgclasses", method= RequestMethod.GET) 
public @ResponseBody List<ModelOrg> findAllOrgClasses() 
{ 
    List<ModelOrg> orgclasses = new ArrayList<ModelOrg>(); 

    ModelOrg testOrg = new ModelOrg(); 
    // Set all values in testOrg 
    orgclasses.add(testOrg); 

    ModelOrg demoOrg = new ModelOrg(); 
    // Set all values in demoOrg 
    orgclasses.add(demoOrg); 

    return orgclasses; 

} 

Для этого, чтобы работать, вы должны добавить ДЖЕКСОН-картограф-ASL, XStream, зависимости пружинных Охты в pom.xml. Кроме того, необходимо настроить сервлет в web.xml, чтобы поддержать JSon ответ:

<servlet-mapping> 
    <servlet-name>orgClassesServlet</servlet-name> 
    <url-pattern>*.json</url-pattern> 
</servlet-mapping> 

где orgClassesServlet наш сервлет.

Смежные вопросы