我有一个问题,关于如何从字符串中获取信息的最佳方式,但该字符串具有 JSON 格式。
{
"internal_id":"1234",
"moreInformation":"Failed authentication for user."
}
在这种情况下,我想获取"internal_id"的值,我已经这样做了,减法,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,并找出哪种方式使用更少的内存或运行速度更快,我怎么知道?执行一个方法需要多长时间?
谢谢!
您可以通过这种方式提取值;使用简单 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