当前位置: 首页 > 知识库问答 >
问题:

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

湛同
2023-03-14

我有两个应用程序引擎应用程序,从一个应用程序提供JSONObject的字符串表示,并在另一个应用程序中获取它。如果我不在JSON中包含Text对象,那么一切都很好

以下是引起问题的JSON对象的特定部分:

,“text\”:\u003cText:rthBlog 1\r\n\“如果你不从历史中吸取教训,你注定要重蹈覆辙,

以下是它在字符串形式中的样子:

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

Text item_Text=新文本(“默认文本”)//它由长度超过500个字符的JSONObject j=new JSONObject()的文本填充;j、 put(“文本”,item_text);j、 put(“item_links”,j_links);项目setProperty(“as_json”,j.toJSONString());数据存储。put(项目);

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

JSONArraysearch_results=新的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;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个答案

微生宝
2023-03-14

您需要控制JSON之间的序列化和反序列化。。。

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

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

Jackson是一个功能强大的库,能够完全控制序列化/反序列化过程。

 类似资料:
  • 问题内容: 这是我的json数据 如何解码呢? 问题答案: 您应该能够使用org.json包进行解码。从这里: 只需使用自己的JSON即可。

  • 问题内容: 如何在Flutter中解码JSON? 问题很简单,但答案至少对我来说不是。 我有一个使用大量JSON字符串的项目。基本上,应用程序和服务器之间的整个通信是通过JSON进行的。 我一直在使用它来处理它,但今天我更新了Flutter核心(0.5.8-pre.178),并且JSON.decode不再可用。 我去了Flutter Docs寻求帮助,但仍然说要使用JSON.decode。 那么,

  • 问题内容: json_decode函数不是PHP 5.1的一部分,所以我不能使用它。此版本还有其他功能吗? 问题答案: 在PHP 5.2之前,您可以使用JSON PECL扩展名。 实际上,它是已集成到PHP 5.2 _( 引用 )中_的扩展: 从PHP 5.2.0开始,JSON扩展默认捆绑并编译为PHP。 其他一些解决方案是使用PHP开发的某些组件。 前一段时间(大约一年前),我使用Zend Fr

  • 我有一个包含json值的文本类型列。 我如何用查询提取postgres中列的'url'json字段? 通过查询,我得到以下错误。 SQL错误[42883]:错误:运算符不存在:text->>未知提示:没有运算符与给定的名称和参数类型匹配。您可能需要添加显式类型转换。psqlException:错误:运算符不存在:text->>未知提示:没有运算符与给定的名称和参数类型匹配。您可能需要添加显式类型转

  • 我正在通过web服务将文件从前端(Angular)发送到后端(Java)。如何在Spring Boot中解码文件? 这是我在Angular中的代码:(用base64编码文件)在一个带有3个参数(base64、名称、大小)的函数中 我在后端的代码:

  • 问题内容: 我从服务中接收到非常深的JSON对象字符串,我必须将其解析为JSON对象,然后将其映射到类。 如何在Kotlin中将JSON字符串转换为对象? 在映射到各个类之后,我使用了Jackson的StdDeserializer。当对象具有必须反序列化为类的属性时,就会出现问题。我无法在另一个反序列化器中获取对象映射器,至少我不知道该怎么做。 在此先感谢您的帮助。最好是在本地,我试图减少所需的依