如何在java中为键值对创建JSON数组,并在JQuery自动完成中使用它来分离KEY VALUE

我一直在努力工作,到处寻找这个解决方案,但没有。

我有一个JSP页面,它有一个Jquery自动完成function。

  
$("#Category").autocomplete({ delay: 100, autoFocus: true, selectFirst: true, source: 'ProviderSuggest.jsp', select: function (event, ui) { $('#autosuggest').val('Y'); } });

ProviderSuggest.jsp的代码如下:

          <% String query = request.getParameter("term"); List CategoryList = new DBConnections().GetCategoryList(query); Iterator CatIterator = CategoryList.iterator(); String JCategory = ""; Map CategoryMap = new HashMap(); Gson gson = new Gson(); while (CatIterator.hasNext()) { String Category = (String) CatIterator.next(); String CategoryID = (String) CatIterator.next(); CategoryMap.put(CategoryID, Category); //JCategory = gson.toJson(CategoryMap); } //System.out.println(CategoryMap); JCategory = gson.toJson(CategoryMap); System.out.println(JCategory); //out.print(JCountry); out.print(JCategory); %> 

当我在自动填充字段中键入关键字时,我会根据需要获取类别。 ProviderSuggest.jsp以json格式返回数据,如下所述:

 {"110":"MRI SCAN","101":"CT SCAN","102":"SONOGRAPHY","103":"X-RAY","104":"PATHOLOGY"} 

我正在使用Google.gson.Gson。

我的要求是当用户输入例如MRI时,他应该看到像MRI扫描,CT扫描等类别。 我看到了这一点,但输入字段的值应为“110”或“101”等等,这样当我进一步处理数据时,我只发送类别ID而不是类别。

如果有人能帮助我完成如何实现这一目标的完整代码,我将很高兴。 我相信我在JSon数组创建部分和Jquery部分犯了一些错误,我们在那里读取了json数据。

谢谢。

您可以通过这种方式呈现自动填充数据。 将categoryid添加为数据属性,然后在选择时,您将拥有具有数据标记的a,并且您可以检索.data(’id’)=类别ID。 希望能帮助到你。

 $("#Category").autocomplete({ delay: 100, autoFocus: true, selectFirst: true, source: 'ProviderSuggest.jsp', select: function (event, ui) { $('#autosuggest').val('Y'); } }).data('autocomplete')._renderItem = function(ul, item) { return $("
  • ").data("item.autocomplete", item).append("" + item.Category + "").appendTo(ul); };
  • 你的Java应该是这样的:目的是让一个具有键作为id的另一个键作为值的键(2个键)

    [{CategoryID :"110",Category:"MRI SCAN"},{CategoryID :"101",Category:"CT SCAN"]}

     <%@page import="java.util.Hashtable"%> <%@page import="java.util.Map"%> <%@page import="java.util.HashMap"%> <%@page import="com.google.gson.Gson"%> <%@page import="java.util.ArrayList"%> <%@page import="java.util.Iterator"%> <%@page import="Functions.DBConnections"%> <%@page import="java.util.List"%> <% String query = request.getParameter("term"); List CategoryList = new DBConnections().GetCategoryList(query); Iterator CatIterator = CategoryList.iterator(); String JCategory = ""; Map CategoryMap; Gson gson = new Gson(); List autoComplete = new ArrayList(); while (CatIterator.hasNext()) { String Category = (String) CatIterator.next(); String CategoryID = (String) CatIterator.next(); CategoryMap = new HashMap(); CategoryMap.put("Category", Category); CategoryMap.put("CategoryID", CategoryID); //JCategory = gson.toJson(CategoryMap); autoComplete.add(CategoryMap); } JCategory = gson.toJson(autoComplete); System.out.println(JCategory); //out.print(JCountry); out.print(JCategory); %>