有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

如何在java中解码Google appengine文本的json表示

我有两个appengine应用程序,正在为一个JSONObject的字符串表示提供服务,并在另一个中获取它。如果在JSON中不包含文本对象,那么每件事情都会很好地工作

以下是导致问题的JSON对象的特定部分:

,\"text\":\u003cText: rthBlog 1\r\n\"If you don\u0027t learn from history you are doomed to repeat i...\u003e,

以下是字符串形式的外观:

<;正文:香港电台博客1 “如果你不从历史中吸取教训,你注定要重蹈覆辙。”

下面是将字符串放入数据存储中的相关代码[我使用的是json.simple]:

Text item_text = new Text("default text"); //it get filled by text longer than 500 char's JSONObject j = new JSONObject(); j.put("text", item_text); j.put("item_links", j_links); item.setProperty("as_json", j.toJSONString()); datastore.put(item);

下面是检索它的代码,将其包装在JSONArray中,将其包装在JSONobject中的数组中,并生成一个字符串[我正在使用appengine json]:

JSONArray search_results = new JSONArray();

    for(Entity e: items)
    {
        String j = (String) e.getProperty("as_json");
        JSONObject jo;

        if(j != null)
        {
            System.out.println(TAG + ".searchItems() string as json: " + j);

            jo = new JSONObject();
            jo.put("item", j);
            search_results.add(jo);
        }
    }

    JSONObject jo = new JSONObject();
    jo.put("items", search_results);

    return jo.toJSONString();

下面是获取它的代码[我正在使用appengine json]:

try { JSONObject jsonObject = new JSONObject(s); JSONArray jsonArray = (JSONArray) jsonObject.get("items");

        JSONObject array_member = null;

        JSONObject j;

        for(int i=0; i<jsonArray.length(); i++)
        {
            array_member = jsonArray.getJSONObject(i);

            System.out.println("array member" + array_member);


            /*Text text = (Text)array_member.get("text"); // 
            System.out.println(text.getValue());*/

            String s_item = array_member.getString("item");

            System.out.println("item in string form: " + s_item);


            j = new JSONObject(s_item); //This is the exception causing line

共 (1) 个答案

  1. # 1 楼答案

    你需要控制与JSON之间的序列化和反序列化

    意思是复杂的物体被表示为简单的文本或数字

    在这里,您试图序列化一个复杂的对象,但它并不是预期的对象。确保只序列化对象所包含的值,而不是整个对象

    一个漂亮且功能强大的库Jackson能够完全控制序列化/反序列化过程