我有以下格式的 Java 字符串:
String s = "[
"samsung",
["samsung galaxy s9 case","samsung galaxy s8 case","samsung galaxy s9 plus case","samsung galaxy s8 charger"],
[{"nodes":[{"name":"Cell Phones & Accessories","alias":"mobile"}]},{},{},{},{},{},{},{},{},{}],
[],
"1XQ3CN8WM8VSE"
]"
处理字符串的最佳方法是什么,以便我可以获得这些值(用 [] 括起来的第二项)
"samsung galaxy s9 case","samsung galaxy s8 case","samsung galaxy s9 plus case","samsung galaxy s8 charger"
在 List<String>
内?
更新
字符串是有效的 JSON 并使用代码进行了测试
public static boolean isJSONValid(String test) {
try {
new JSONObject(test);
} catch (JSONException ex) {
// edited, to include @Arthur's comment
// e.g. in case JSONArray is valid as well...
try {
new JSONArray(test);
} catch (JSONException ex1) {
return false;
}
}
return true;
}
我还尝试将其解析为 JSON(按照建议),但我得到了异常。
JSONObject obj = 新的 JSONObject(s);
线程“main”org.json.JSONException 中出现异常:JSONObject 文本必须以 '{' at 1 [character 2 line 1] 开头。
我的字符串总是以 [..] 开头
最佳答案
该格式不是有效的 json,这就是您收到该错误的原因,获取所需字符串的一种简单方法是使用 split 方法,然后将其存储在您喜欢的集合中。
public static void main(String args[]){
String s = "[samsung,[\"samsung galaxy s9 case\",\"samsung galaxy s8 case\",\"samsung galaxy s9 plus case\",\"samsung galaxy s8 charger\"],[{\"nodes\":[{\"name\":\"Cell Phones & Accessories\",\"alias\":\"mobile\"}]},{},{},{},{},{},{},{},{},{}],[],\"1XQ3CN8WM8VSE\"]";
String[] splitedFullString = s.split(",\\[");
String sequence = splitedFullString[1];
sequence = sequence.replaceAll("]", "");
sequence = sequence.replaceAll("\"", "");
String[] splitSequence = sequence.split(",");
List<String> list = new ArrayList<>();
for(String item : splitSequence){
list.add(item);
}
for(String item : list){
System.out.println(item);
}
}
关于java - 从 Java 字符串中提取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54911408/