2016-04-10 142 views
0

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

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

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

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

我如何可以提取这些值,如果我不知道的指数子串,因为它们会因不同的情况而改变?

+8

这是一个JSON字符串。而不是解析它,找到一个JSON库,它将从这个字符串中生成一个'JSONObject'。如果您使用的是Java EE 7及更高版本,则可以查看JSON-P框架。 –

+0

我以非常简单的方式解决了这个问题,尽管我相信GaruGaru的答案是正确的。 'json = new JSONObject(JsonResponse); String myID = json.getString(“id”);字符串googleUserName = json.getString(“google_username”);' – Lenny

回答

3

这看起来像JSON格式,你应该看看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); 
} 
+0

非常好的答案,欢迎来到stackoverflow! –

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

0

解析为JSON尽管如此,这里是一个纯粹的基于字符串的解决方案:

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

而对于其他两个类似的,对于其他领域交换id名。