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

JSON在android中将子树提取为字符串

徐丰茂
2023-03-14

我有以下json结构:

 "interpretation": {
        "ComplexSearchRequest": {
            "BoostLanguage": 0,
            "Clauses": {
                "MustClauses": [
                    {
                        "Match": {
                            "Attribute": "Channel",
                            "Operator": "None",
                            "Value": "n twenty four c h"
                        }
                    }
                ],
                "MustNotClauses": []
            },
            "FilterLanguages": [],
            "ItemFilters": [],
            "MaxResults": 10
        },
        "GraphManagerRequestId": "baf28b69-0806-4725-9fb4-1d2acd1944ea",
        "GraphManagerRequestLanguage": "de",
        "Type": "Search"
    },

如何提取整个节点“子句”并将其转换为字符串?输出应该是:

"Clauses": {
                "MustClauses": [
                    {
                        "Match": {
                            "Attribute": "Channel",
                            "Operator": "None",
                            "Value": "n twenty four c h"
                        }
                    }
                ],
                "MustNotClauses": []
            },

需要一个最佳的解决方案。

对于简单的解析,我使用JsonReader。

共有2个答案

易宏阔
2023-03-14

试试用org.json吧,是我见过最好的:https://mvnrepository.com/artifact/org.json/json

import org.json.JSONException;
import org.json.JSONObject;

public class JsonSample
{

  public static void main(String[] args) throws JSONException
  {
    String json = "{ \"interpretation\": {        \"ComplexSearchRequest\": {            \"BoostLanguage\": 0,            \"Clauses\": {                \"MustClauses\": [                    {                        \"Match\": {                            \"Attribute\": \"Channel\",                            \"Operator\": \"None\",                            \"Value\": \"n twenty four c h\"                        }                    }                ],                \"MustNotClauses\": []            },            \"FilterLanguages\": [],            \"ItemFilters\": [],            \"MaxResults\": 10        },        \"GraphManagerRequestId\": \"baf28b69-0806-4725-9fb4-1d2acd1944ea\",        \"GraphManagerRequestLanguage\": \"de\",        \"Type\": \"Search\"    }}";

    JSONObject jsonObject = new JSONObject(json);

    System.out.println(jsonObject.getJSONObject("interpretation").getJSONObject("ComplexSearchRequest").getString("Clauses"));

  }

}
乜元魁
2023-03-14

假设您有带有名称解释的 JSONObject,那么以下是获取子句的简单方法:

JSONObject complexSearchRequest = interpretation.getJSONObject("ComplexSearchRequest");
JSONObject clauses = complexSearchRequest.getJSONObject("Clauses");
Log.d("clauses",clauses.toString());
 类似资料:
  • 问题内容: 我正在尝试从控制台(包括空格)读取整行,然后对其进行处理。使用bufio.ReadString,将换行符与输入一起读取,因此我想出了以下代码来修剪换行符: 有没有更惯用的方法来做到这一点?也就是说,是否已经有一个库在为您提取子字符串时负责处理结尾的空字节? (是的,我知道在go readline->string中已经有一种不用换行符就能读取行的方法,但是我正在寻找更多用于优雅的字符串操

  • 我有这样一个JSON文件: 我需要得到回应。使用者用户名值。我试过这个: 但我得到了这个错误: 怎么修,肯定有办法,就是找不到。

  • 我正在以JSON字符串的形式从数据库中获取数据: 如何从给定的JSON字符串中提取公司名称?

  • 在 String 中提供了两个截取字符串的方法,一个是从指定位置截取到字符串结尾,另一个是截取指定范围的内容。下面对这两种方法分别进行介绍。 1. substring(int beginIndex) 形式 此方式用于提取从索引位置开始至结尾处的字符串部分。调用时,括号中是需要提取字符串的开始位置,方法的返回值是提取的字符串。例如: 2. substring(int beginIndex,int e

  • 问题内容: 我有一个类似的领域 我想从数据中提取。 如何使用SQL Server 2008高效地做到这一点?谢谢你 问题答案: 试试这个 退货

  • 问题内容: 我正在使用select2中的multiselect元素来输入多个“标签”。当我想从元素中获取值时,我会得到如下信息(对于我在框中输入的tag1和tag2): 如何从数组中的文本中获取结果,如下所示: 而我该如何逆转这一过程呢? 问题答案: 试试这个简单的迭代。