繁体   English   中英

使用 JSON 格式 java 获取字符串的特定部分

[英]Obtain specific part of a string with JSON Format java

我有一个关于如何从字符串中获取信息的最佳方式的问题,但具有 JSON 格式。

{
"internal_id":"1234",
"moreInformation":"Failed authentication for user."
}

在这种情况下,我想获得“internal_id”的值,我已经做到了,使用 subtring、lastIndexOf 和 indexOf

public static String returnInternalCode(String json){
    String internalCode = json.substring(json.lastIndexOf("\"internal_id\":\"") + "\"internal_id\":\"".length(), json.length() - 1);
    if (json.lastIndexOf("\"internal_id\":\"") == -1) return null;
    return internalCode.substring(0, internalCode.indexOf("\""));
}

我还尝试了几个没有数据的订单更改 JSON,它也有效。 我离开了我所做的全部测试:

public class Test {

    public static void main(String[] args) {
        // Original JSON
        String json = "{\"internal_id\":\"999999\",\"moreInformation\":\"Failed authentication for user, 1 authentication attempt remaining.\"}";

        // Other JSON order
        String json2 = "{\"moreInformation\":\"Failed authentication for user. Invalid response.\", \"moreInformation2\":\"Failed authentication for user. \", \"internal_id\":\"45678\"}";

        // JSON without the internal_id
        String json3 = "{\"moreInformation\":\"Failed authentication for user. Invalid response.\"}";

        // JSON without moreInformation
        String json4 = "{\"internal_id\":\"999999\"}";

        System.out.println("JSON: ".concat(json4));
        System.out.println("internalId: " + returnInternalId(json4));
        System.out.println("moreInformation: " + returnMoreInformation(json4));
    }

    public static String returnInternalId(String json){
        String internalCode = json.substring(json.lastIndexOf("\"internal_id\":\"") + "\"internal_id\":\"".length(), json.length());
        if (json.lastIndexOf("\"internal_id\":\"") == -1) return null;
        return internalCode.substring(0, internalCode.indexOf("\""));
    }

    public static String returnMoreInformation(String json){
        String moreInformation = (json.substring(json.lastIndexOf("\"moreInformation\":\"") + "\"moreInformation\":\"".length(), json.length()));
        if (json.lastIndexOf("\"moreInformation\":\"") == -1) return null;
        return moreInformation.substring(0, moreInformation.indexOf("\""));
    }
}

我想知道是否有更好的方法来做我所做的事情,例如使用 StringBuilder 或 StringBuffer 以及找出哪种方式使用更少的内存或运行速度更快,我怎么知道? 执行一个方法需要多长时间?

非常感谢!

您可以通过这种方式提取值; 使用 Simple-json 库

    JSONObject jobj = (JSONObject) parser.parse(yourJsonString); // Pass the Json formatted String

    String internal_id = (String) jobj.get("internal_id"); // Extract the value from your key

    System.out.println(internal_id); // 1234

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM