使用spring mvc构建json数组

时间:2015-03-19 09:54:18

标签: json spring spring-mvc

如何使用spring MVC构建以下JSON数组?我想使用Responsebody将以下JSON数组作为json响应返回。或者我可以使用javax.json api来构建下面的JSON数组。

 {
                        '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" ],
                                }

                            }

                        }
                    };

2 个答案:

答案 0 :(得分: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。

答案 1 :(得分: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;

}

为此,您需要在pom.xml中添加jackson-mapper-asl,xstream,spring-oxm依赖项。您还需要在web.xml中配置servlet,以支持json响应:

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

其中orgClassesServlet是我们的servlet。