2016-04-10 3 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 = новый JSONObject (JsonResponse); Строка myID = json.getString ("id"); String googleUserName = json.getString ("google_username"); ' – Lenny

ответ

3

Это похоже на формат json, вы должны взглянуть на Gson library Google, который автоматически проанализирует эту строку.

Ваш класс должен выглядеть следующим образом

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 Object Notation). Это общий язык, используемый для передачи данных.

Вы можете разобрать его с помощью библиотеки 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 для другого поля имена.

Смежные вопросы