有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

正则表达式Java解析字符串

我有一个以下格式的字符串:

 {"id":"1263e246711d665a1fc48f09","facebook_username":"","google_username":"814234576543213456788"}

但有时这个字符串看起来像:

{"id":"1263e246711d665a1fc48f09","facebook_username":"109774662140688764736","google_username":""}

如果我不知道子字符串的索引,因为它们在不同情况下会发生变化,如何提取这些值


共 (3) 个答案

  1. # 1 楼答案

    该字符串的格式为JSON(JavaScript对象表示法)。是用于传输数据的通用语言

    您可以使用Google的库Gson解析它,只需将它添加到类路径中

        Gson gson = new Gson();
        //convert the json string back to object
        DataObject obj = gson.fromJson(br, DataObject.class); //The object you want to convert to.
    

    https://github.com/google/gson

    Check this out on how to convert to Java Object

  2. # 2 楼答案

    尽管解析为JSON,但这里有一个纯基于字符串的解决方案:

    String id = str.replaceAll(".*\"id\":\"(.*?)\".*", "$1");
    

    和其他两个类似,将id替换为其他字段名

  3. # 3 楼答案

    这看起来像json格式,您应该看看google提供的Gson library,它将自动解析该字符串

    你的班级应该是这样的

    public class Data
    {
    private String id;
    
    private String facebook_username;
    
    private String google_username;
    // getters / setters...
    }
    

    然后,您可以简单地创建一个函数,从json字符串创建对象:

    Data getDataFromJson(String json){
         return (Data) new Gson().fromJson(json, Data.class);
    }