【问题标题】:Parsing JSON in Java when two fields are the same? [duplicate]当两个字段相同时在Java中解析JSON? [复制]
【发布时间】:2016-11-17 17:48:32
【问题描述】:

抱歉,我在这里尝试了多种方法,但似乎遇到了一些问题。这应该很简单。

JSON 文件:

{
  "content": [
    {
      "media_type": "text/html",
      "text": "<p>Hello world</p>"
    },
    {
      "media_type": "text/plain",
      "text": "Hello world"
    }
  ],
  "id": "123",
  "title": "no-title"
}

我有一个从这个字符串创建的 JSONObject。

我试过了——

String txtFromJSON = json.getJSONObject("content").getJSONObject("text").toString();


String txtFromJSON = json.getString("content.text");

String txtFromJSON = json.getString("content");

所有这些都失败了。

我想要的输出只是

&lt;p&gt;Hello world&lt;p&gt;

从第一个文本字段开始。

我有什么简单的方法可以将这些数据存储在变量中吗?

谢谢。

【问题讨论】:

  • content 是一个数组,而不是一个对象——听起来你应该使用getJSONArray。一个简短但完整的程序来演示该问题会更容易为您提供帮助。

标签: java json eclipse jsoup jsonobject


【解决方案1】:

试试这个:

final JSONObject obj = new JSONObject(youJsonString);
final JSONObject content = obj.getJSONArray("content");
final int n = content.length();
if(n ==1 ){

String txtFromJSON = json.getString("text");

}

【讨论】:

  • 他们为什么要这样做?它有什么区别?为什么他们的代码一开始就错了?
  • 同意@SotiriosDelimanolis 你绝对没有提供任何关于你为什么认为它是有效的答案的内容,其次你的答案是完全错误的。
  • 在这一行中 String txtFromJSON = json.getString("content");他试图获取一个数组,但他只想接收第一个文本字段的字符串“Hello world”(json.getString("text");)。
  • 将该内容和所有其他详细信息添加到您的答案中
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-01-18
  • 2021-11-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多