如何在JSP中将json转换为关联数组

时间:2016-04-26 08:30:57

标签: json jsp gson

我试图根据json制作动态jsp页面。

例如,如果我的json看起来像这样:

{
    'page1':'true',
    'page2':'true',
    'page3':'false'
}

在php中,我可以通过一行轻松获取关联数组:

$data = json_decode($json_str);

然后我可以在我需要的地方找到我想要的那个,(即)

If($data['page1'] == 'true') 
    echo #page link#;

但是在jsp中,它并不容易,因为它没有像php这样的文档。我找到gson但仍然不确定。如何使用它来实现它。

请给我一些例子,我可以将json转换为关联数组,然后在jsp中获取并访问它。

1 个答案:

答案 0 :(得分:1)

Java Map是一个关联数组。您可以要求Gson使用以下命令反序列化您的json输入:

Map<String,String> map = new Gson().fromJson(inputJson, new TypeToken<Map<String,String>>() {}.getType());

示例代码:

package net.sargue.gson;

import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;

import java.lang.reflect.Type;
import java.util.Map;

public class SO36859440 {
  public static void main(String[] args) {
    String inputJson = "{\n" +
            "    'page1':'true',\n" +
            "    'page2':'true',\n" +
            "    'page3':'false'\n" +
            "}";

    Type type = new TypeToken<Map<String, String>>() {}.getType();
    Map<String,String> map = new Gson().fromJson(inputJson, type);

    System.out.println(map.get("page2"));
    System.out.println(map.get("page3"));
  }
}

输出结果为:

true
false

然后,您的问题是关于在JSP中转换它。那么,JSP的最佳实践建议您将这种处理移动到充当控制器的Servlet,并将属性传递给JSP以构建视图。您可以使用<% ... %>将代码直接放在JSP上,但我强烈建议您不要这样做。但那是一个完全不同的问题。