2013-04-14 5 views
0

Я хочу извлечь значение 0.81 из следующей строки, но я не знаю, как это сделать. Использование JSON не работает, потому что, насколько я знаю, это не правильный код JSON.Java Extract часть строки

[{ "BoundingBox": { "размер": { "высота": 239,23, "ширина": 239,23}, "TL": { "у": 46.15, "х": 166,92}}, «имя»: «152: 0,81», «доверие»: 0,9)

У вас есть идеи, как это сделать?

+1

Это действует в формате JSON. – nickb

+1

Это действительно json, но '0.81' не является самоцелью. Вам нужно получить значение «имя», разбить его на «:», взять вторую часть результата разделения. Должно быть хорошее упражнение, поэтому я не буду давать рабочий ответ. – Bart

ответ

0

Фактически это действительно Json, поэтому вы можете использовать Json-библиотеку (любой из них), чтобы загрузить Json в Object и получить доступ к значению. Если у вас возникают проблемы с загрузкой этого объекта в объект, возможно, вы можете изменить ваш вопрос и показать нам ошибку?

Если по какой-то шанс, вы можете получить ответ, который не является действительным Json, вы можете использовать регулярные выражения:

Если у Вас всегда есть тот же рисунок, что-то вроде:

\"name\":\"\d+:(\d\.\d+),\" 

Ваша ценность будет в захвате группы.

Если вы не знаете, как использовать регулярные выражения в Java, просто выполните поиск SO или Google, есть масса примеров.

+0

Хорошее предложение об отказе к регулярному выражению, когда JSON-анализ обнаруживает недействительный JSON. – djangofan

+1

Мне очень сложно поверить, что API любого приложения, производящий JSON, будет спорадически производить недействительный JSON. Звучит очень, очень маловероятно для меня. – nickb

+0

Да, это невероятно, но у меня много ошибок при разборе его в JSON. 152 динамически, как изменить регулярное выражение, чтобы оно соответствовало этому, это переменная. – user2147674

1

Если это JSON, который он, как представляется, быть, загрузить его как JSON объект и

JSONArray jsonArray = new JSONArray(thatString); 
JSONObject jObj = jsonArray.getJSONObject(0); 
String name = jObj.getString("name"); 

Что бы тогда дать вам строку «152: 0.81», странное имя - однако я затем разделить его:

String[] tokens = name.split(":"); 

лексемы [0] будет 152

лексемы [1] будет 0,81,

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