【问题标题】:Java Method to Read JSON Elements读取 JSON 元素的 Java 方法
【发布时间】:2015-01-09 04:12:07
【问题描述】:

JSON 易于使用,但有时编写多个子元素会让在 Java 中一次又一次地编写 getJSONObject("") 很痛苦。有什么简单的方法可以避免重复调用并使代码更干净吗?

【问题讨论】:

  • 将 JSON 解析为列表和地图,然后访问该结构。这很简单。
  • @HotLicks 我有一个场景,我的 JSON 并不总是有相同的元素,列表和地图索引将是依赖项。例如,我们有以下场景,在一个场景中,我们将在 NewQuote 和其他场景中具有价值然后我们不这样做,List 和 Maps 将允许 在引用之后排在第二位,对于大型 XML,它很难管理。使用我的方法,无论位置如何,我都会使用标签名称,如果它存在,则返回“”。可能不是干净的方法,但我是测试员并想分享我的经验。
  • 这毫无意义。对于任何方案,如果有遗漏的元素,您必须以某种方式弄清楚。
  • 好吧,那些省略的元素是有效的场景,所以在我的情况下,我正在比较我的请求和供应商响应,现在他们不需要向我发送所有请求的数据。无论如何,正如我所说,我的方法是通过仅以树格式传递元素来读取 JSON 元素。可能是错的,将对 List 和 Maps 进行更多研究,看看与下面相比需要多少努力。

标签: java json getjson


【解决方案1】:

在尝试了多轮之后,我想出了下面的方法,你只需将 JSON 对象和所有带有“/”的元素传递给下面的 Java 方法,它就会读取 JSON 值。注意-此代码更多用于字符串值,您可以根据需要对其进行更多自定义。

public static String getJSONTagValue(JSONObject partData, String xpath) {
    String output="";
    String[] getPrmString=xpath.split("/");
    try {
        if (partData.has(getPrmString[0])){
            for (int i=0;i<getPrmString.length;i++){
                if (partData.has(getPrmString[i]) && i!=getPrmString.length-1){

                        partData=partData.getJSONObject(getPrmString[i]);

                } else if (partData.has(getPrmString[i])) {
                    output=partData.get(getPrmString[i])+"";
                    if (output.contains("xsi:nil")){
                        output="";
                    } else if (output.contains(".0")){
                        output=output.replace(".0", "");
                    } 
                }               
            }           
        }
        if ("".equalsIgnoreCase(output)){
            System.out.println("Missing xpath in Response ",xpath);
        } 
    } catch (JSONException e) {
        System.out.println("Missing xpath in Response ",xpath)
        e.printStackTrace();
    }
    return output;
} 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-13
    • 1970-01-01
    • 2014-02-17
    • 2021-12-31
    • 1970-01-01
    • 2011-05-17
    相关资源
    最近更新 更多