从 Java 字符串中提取值

我有以下格式的 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 文本必须在 1 [character 2 line 1] 处以 '{' 开头。


我的字符串总是以 [..] 开头


四季花海
浏览 224回答 2
2回答

Cats萌萌

该格式不是有效的 json,这就是您收到该错误的原因,获取所需字符串的一种简单方法是使用 split 方法,然后将其存储在您喜欢的集合中。public static void main(String args[]){&nbsp; &nbsp; 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\"]";&nbsp; &nbsp; String[] splitedFullString = s.split(",\\[");&nbsp; &nbsp; String sequence = splitedFullString[1];&nbsp; &nbsp; sequence = sequence.replaceAll("]", "");&nbsp; &nbsp; sequence = sequence.replaceAll("\"", "");&nbsp; &nbsp; String[] splitSequence = sequence.split(",");&nbsp; &nbsp; List<String> list = new ArrayList<>();&nbsp;&nbsp; &nbsp; for(String item : splitSequence){&nbsp; &nbsp; &nbsp; &nbsp; list.add(item);&nbsp; &nbsp; }&nbsp; &nbsp; for(String item : list){&nbsp; &nbsp; &nbsp; &nbsp; System.out.println(item);&nbsp; &nbsp; }}

哈士奇WWW

我在 Andreas 的回答的帮助下编写了代码,&nbsp; &nbsp; JSONArray obj = new JSONArray(s);&nbsp; &nbsp; String str = obj.get(1).toString();&nbsp; &nbsp; String[] arr = str.substring(1, str.length()-1).split(",");这现在工作正常。谢谢你。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java