0

我正在尝试从一长串如下所示的信息中提取"first_name"和:"last_name"

{
    "123123123": {
        "id": "12321312****",
        "email": "***************",
        "first_name": "Marcus",
        "gender": "male",
        "last_name": "Bengtsson",
        "link": "https://www.facebook.com/app_scoped_user_id/123123123/",
        "locale": "en_EN",
        "middle_name": "Peter",
        "name": "Marcus Peter Bengtsson"
    }
}

我这样做的方式(这可能是非常错误且非常糟糕的解决方案)是我首先使用以下代码从"first_name"to提取子字符串:"link"

String subStr = str.substring(str.indexOf("first_name"), str.lastIndexOf("link"));

然后我得到:

first_name":"Marcus","gender":"male","last_name":"Bengtsson","

然后我做同样的事情,但从":"to"gender"得到"first_name

String firstNameOfUser = subStr.substring(subStr.indexOf(":")+2, subStr.lastIndexOf("gender")-3);

然后同样的事情"last_name"

String lastNameOfUser = subStr.substring(subStr.indexOf(""last_name"")+12, subStr.lastIndexOf(",")-1);

最后,我在两个字符串之间附加一个空格:

String nameOfUser = new StringBuilder().append(firstNameOfUser).append(" ").append(lastNameOfUser).toString();

然后我得到:

Marcus Bengtsson

可能有更好的方法可以做到这一点,但我无法弄清楚如何。

4

4 回答 4

8

这看起来像一个JSON,所以最好使用许多可用的解析器之一来解析它,然后提取数据。

于 2015-05-26T07:39:53.650 回答
0

给定的 String 是 JSON,使用JSONParser将其解析为 json,然后提取所需的数据。

于 2015-05-26T07:55:03.040 回答
0

那是一个json?访问此链接JSON 示例

nameOfUser = 123123123.first_name + " " + 123123123.last_name;

我希望这能帮到您

于 2015-05-26T07:59:56.137 回答
-1

正如@Crozin 所写,它看起来像json,但如果你不能以这种方式解析它,你总是可以使用正则表达式。只需将 Matcher, Pattern 与 regex 一起使用^.*\"first_name\":\"([a-zA-Z]+)\".*\"last_name\":\"([a-zA-Z]+)\".*$

于 2015-05-26T07:42:44.713 回答