0

嗨,我正在制作一个 Maven 休息 Web 服务应用程序,我需要在我的 JSONRest 代码中获取哈希图值。我怎样才能做到这一点?

这是我打印 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 值。

如何一一获取哈希图值?请,任何帮助将不胜感激,并向我建议我做错了什么。

请谢谢

4

2 回答 2

0

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

于 2013-10-01T03:13:15.267 回答
0

如果要从 Java servlet 反弹,则需要将 JSON 字符串作为响应传回前端。我不知道你的结构是什么,但如果你的 servlet extends 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;
}
于 2013-09-30T15:28:33.817 回答