为了账号安全,请及时绑定邮箱和手机立即绑定

从 Java 字符串中提取值

从 Java 字符串中提取值

四季花海 2022-07-14 09:48:45
我有以下格式的 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] 处以 '{' 开头。我的字符串总是以 [..] 开头
查看完整描述

2 回答

?
Cats萌萌

TA贡献1805条经验 获得超9个赞

该格式不是有效的 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);

    }

}


查看完整回答
反对 回复 2022-07-14
?
哈士奇WWW

TA贡献1799条经验 获得超6个赞

我在 Andreas 的回答的帮助下编写了代码,


    JSONArray obj = new JSONArray(s);


    String str = obj.get(1).toString();

    String[] arr = str.substring(1, str.length()-1).split(",");

这现在工作正常。谢谢你。


查看完整回答
反对 回复 2022-07-14
  • 2 回答
  • 0 关注
  • 223 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信