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

jsconObject.getString(“list”)现在返回org.json.jsonException:jsonObject[“list”]不是字符串

齐甫
2023-03-14

我验证了JSON是好的。当我逐步通过调试器并观察方法getString(见下文)时,程序得到的是一个JSONObject,而不是一个String。你知道为什么会发生这种情况以及如何纠正它吗?这是在.get()调用之后显示的对象值:

{“access_level”:“readonly”,“地址”:“9997-dlsrir-b8aky4@mg.lmsnet.com”,“名称”:“密歇根大道北纬123号公寓协会”,“created_at”:“thu,2019年1月10日15:20:35-0000”,“description”:“”members_count“:1}

public MailingList( ClientResponse responseContactList )
    {
        try
        {
            System.out.println( "Begin MailingList Constructor!" );
            String tempStr = responseContactList.getEntity(String.class);
            JSONObject aJSONObject = new JSONObject( tempStr );
            aJSONObject = new JSONObject( aJSONObject.getString( "list" ) );
            createdAt = aJSONObject.getString( "created_at" );
            address = aJSONObject.getString( "address" );
            membersCount = Long.parseLong( aJSONObject.getString( "members_count" ) );
            description = aJSONObject.getString( "description" );
            name = aJSONObject.getString( "name" );

        } catch( Exception e )
        {
            e.printStackTrace();
            isValid = false;
        }
        isValid = true;
        System.out.println( "End MailingList Constructor!" );
    }


   /**
     * Get the string associated with a key.
     *
     * @param key
     *            A key string.
     * @return A string which is the value.
     * @throws JSONException
     *             if there is no string value for the key.
     */
    public String getString(String key) throws JSONException {
        Object object = this.get(key);
        if (object instanceof String) {
            return (String) object;
        }
        throw new JSONException("JSONObject[" + quote(key) + "] not a string.");
    }

共有1个答案

洪照
2023-03-14

看来,2011年5月的这一变化可能是导致不同行为的原因。

https://github.com/stleary/json-java/commit/f4cb14728f13629972a0ea76bb3dc0705a735fa8

看第634行。toString方法过去看起来如下所示,它会给出正确的结果:

 Object object = get(key);
 return object == NULL ? null : object.toString();
 aJSONObject = new JSONObject( aJSONObject.getString( "list" ) ); 
 aJSONObject = aJSONObject.getJSONObject( "list" );
 类似资料:
  • 我正在尝试使用JsonObject将java对象转换为String。以下是我用来添加属性的代码: 这里最后一个属性条件是Long值的列表,下面是检索到的响应: 调味品的预期产量如下: 我应该怎么做才能获得JSON数组而不是字符串形式的调味品?

  • 问题内容: 我发现自己同意返回接口而不是具体的类。 原因很简单,我要松散耦合。 但是还会有其他影响或权衡吗? 问题答案: 对于List或ArrayList之类的类型,不应进行任何编译,并且应将List提升Code返回到接口。 如果这是通过诸如CopyOnWriteArrayList之类的并发包进行的,并且您使用的是addIfAbsent之类的方法(未在List接口中定义),您将发现自己受到限制。

  • 我发现自己同意返回一个接口,而不是一个具体的类。

  • 有人能告诉我为什么列表返回空吗?我的xpath是准确的,因为我重新检查了它,但我仍然无法迭代它,而调试for循环甚至没有执行。我不确定我哪里出了问题。

  • 我有一个Spring Data JPA存储库接口,看起来像这样: 除了返回类型为HashMap的集合之外,是否有其他解决方法可以实现相同的效果