如何在jsonrest脚本中hashmap值

时间:2013-09-30 11:31:18

标签: java json dojo

您好我正在制作一个Maven rest Web服务应用程序,我需要在我的JSONRest代码中获取hashmap值。我怎么能这样做?

这是我的服务代码,它打印JSON值:

@GET
@Path("/ind")
@Produces("application/json")
public HashMap<String,String> json()
{
    HashMap<String,String> m = new HashMap<String,String>();

    m.put("Fiyas", "basha");
    m.put("Rajesh", "Babu");

    JSONObject j = new JSONObject();

    try {
        if(j != null)
        j.put("emp", m);
    } catch (JSONException ex) {
        ex.getMessage();
    }

    return m;
}

打印{"Fiyas":"basha","Rajesh":"Babu"}

现在我需要在我的dojo脚本中的特定JSON emp键的选择框中调用此JSON值

我的JSONRest代码:

 <script>
    require(["dojo/store/JsonRest", "dojo/dom-construct"], function(JsonRest, domConst){
        var store = new JsonRest({
            target: "http://localhost:8080/userservices/rest/rest/ind",
        });

        store.query().then(function(jsonData){
            alert(jsonData.emp);
            domConst.place("<option value=''>Year's of Exp</option>","Experience");
            for(var i in jsonData.emp)
            {
                domConst.place("<option value="+jsonData.emp[i]+">" + jsonData.emp[i] +  "</option>","Experience");
            }
        });
    });
</script>

我收到undefined并且无法获取此脚本中的值,但我在firebug中收到了响应和JSON值。

如何逐个获取hashmap值?请,任何帮助将不胜感激,并告诉我我做错了什么。

谢谢

2 个答案:

答案 0 :(得分:0)

如果您正在反弹Java servlet,则需要将JSON字符串作为响应传递回前端。我不知道你的结构是什么,但如果你的servlet扩展HttpServlet,你应该做一些类似的事情:

@Override
protected void doGet(final HttpServletRequest request, final HttpServletResponse response) {
    HashMap<String, String> m = json();
    JSONObject j = new JSONObject();

    try {
        if(j != null) {
            j.put("emp", m);
        }
    } catch (JSONException ex) {
        ex.getMessage();
    }

    // Send the JSON string back
    response.getWriter().print(j.toString());
}

您的json()方法可以稍微减少一点:

@GET
@Path("/ind")
@Produces("application/json")
public HashMap<String,String> json()
{
    HashMap<String,String> m = new HashMap<String,String>();

    m.put("Fiyas", "basha");
    m.put("Rajesh", "Babu");

    return m;
}

答案 1 :(得分:0)

store.query调用的响应应该是一个哈希映射数组,而不是单个对象。 store.get返回单个对象。对store.query的响应还需要有一个Content-Range标头来描述服务器上可用的总对象数。这些都记录在JsonRest商店的Implementing a REST server文档中。