Получение одной строки из json
Использую геокодер от Яндекса для получения адреса по координатам. Ответ получаю в формате json:
{
"response": {
"GeoObjectCollection": {
"metaDataProperty": {
"GeocoderResponseMetaData": {
"Point": {
"pos": "34.366834 53.244996"
},
"request": "34.366834,53.244996",
"results": "10",
"found": "9"
}
},
"featureMember": [
{
"GeoObject": {
"metaDataProperty": {
"GeocoderMetaData": {
"precision": "exact",
"text": "Россия, Брянск, проспект Ленина, 28",
"kind": "house",
"Address": {
"country_code": "RU",
"formatted": "Россия, Брянск, проспект Ленина, 28",
"postal_code": "241050",
"Components": [
{
"kind": "country",
"name": "Россия"
},
{
"kind": "province",
"name": "Центральный федеральный округ"
},
{
"kind": "province",
"name": "Брянская область"
},
{
"kind": "area",
"name": "городской округ Брянск"
},
{
"kind": "locality",
"name": "Брянск"
},
{
"kind": "street",
"name": "проспект Ленина"
},
{
"kind": "house",
"name": "28"
}
]
},
"AddressDetails": {
"Country": {
"AddressLine": "Россия, Брянск, проспект Ленина, 28",
"CountryNameCode": "RU",
"CountryName": "Россия",
"AdministrativeArea": {
"AdministrativeAreaName": "Брянская область",
"SubAdministrativeArea": {
"SubAdministrativeAreaName": "городской округ Брянск",
"Locality": {
"LocalityName": "Брянск",
"Thoroughfare": {
"ThoroughfareName": "проспект Ленина",
"Premise": {
"PremiseNumber": "28",
"PostalCode": {
"PostalCodeNumber": "241050"
}
}
}
}
}
}
}
}
}
},
"name": "проспект Ленина, 28",
"description": "Брянск, Россия",
"boundedBy": {
"Envelope": {
"lowerCorner": "34.362698 53.242511",
"upperCorner": "34.370908 53.247436"
}
},
"Point": {
"pos": "34.366803 53.244973"
}
}
},
{
"GeoObject": {
"metaDataProperty": {
"GeocoderMetaData": {
"precision": "street",
"text": "Россия, Брянск, проспект Ленина",
"kind": "street",
"Address": {
"country_code": "RU",
"formatted": "Россия, Брянск, проспект Ленина",
"Components": [
{
"kind": "country",
"name": "Россия"
},
{
"kind": "province",
"name": "Центральный федеральный округ"
},
{
"kind": "province",
"name": "Брянская область"
},
{
"kind": "area",
"name": "городской округ Брянск"
},
{
"kind": "locality",
"name": "Брянск"
},
{
"kind": "street",
"name": "проспект Ленина"
}
]
},
"AddressDetails": {
"Country": {
"AddressLine": "Россия, Брянск, проспект Ленина",
"CountryNameCode": "RU",
"CountryName": "Россия",
"AdministrativeArea": {
"AdministrativeAreaName": "Брянская область",
"SubAdministrativeArea": {
"SubAdministrativeAreaName": "городской округ Брянск",
"Locality": {
"LocalityName": "Брянск",
"Thoroughfare": {
"ThoroughfareName": "проспект Ленина"
}
}
}
}
}
}
}
},
"name": "проспект Ленина",
"description": "Брянск, Россия",
"boundedBy": {
"Envelope": {
"lowerCorner": "34.354801 53.235602",
"upperCorner": "34.37628 53.253599"
}
},
"Point": {
"pos": "34.365635 53.244489"
}
}
},
{
"GeoObject": {
"metaDataProperty": {
"GeocoderMetaData": {
"precision": "other",
"text": "Россия, Брянск, Советский район",
"kind": "district",
"Address": {
"country_code": "RU",
"formatted": "Россия, Брянск, Советский район",
"Components": [
{
"kind": "country",
"name": "Россия"
},
{
"kind": "province",
"name": "Центральный федеральный округ"
},
{
"kind": "province",
"name": "Брянская область"
},
{
"kind": "area",
"name": "городской округ Брянск"
},
{
"kind": "locality",
"name": "Брянск"
},
{
"kind": "district",
"name": "Советский район"
}
]
},
"AddressDetails": {
"Country": {
"AddressLine": "Россия, Брянск, Советский район",
"CountryNameCode": "RU",
"CountryName": "Россия",
"AdministrativeArea": {
"AdministrativeAreaName": "Брянская область",
"SubAdministrativeArea": {
"SubAdministrativeAreaName": "городской округ Брянск",
"Locality": {
"LocalityName": "Брянск",
"DependentLocality": {
"DependentLocalityName": "Советский район"
}
}
}
}
}
}
}
},
"name": "Советский район",
"description": "Брянск, Россия",
"boundedBy": {
"Envelope": {
"lowerCorner": "34.260119 53.216405",
"upperCorner": "34.400705 53.281744"
}
},
"Point": {
"pos": "34.354101 53.235074"
}
}
},
{
"GeoObject": {
"metaDataProperty": {
"GeocoderMetaData": {
"precision": "other",
"text": "Россия, Брянск",
"kind": "locality",
"Address": {
"country_code": "RU",
"formatted": "Россия, Брянск",
"Components": [
{
"kind": "country",
"name": "Россия"
},
{
"kind": "province",
"name": "Центральный федеральный округ"
},
{
"kind": "province",
"name": "Брянская область"
},
{
"kind": "area",
"name": "городской округ Брянск"
},
{
"kind": "locality",
"name": "Брянск"
}
]
},
"AddressDetails": {
"Country": {
"AddressLine": "Россия, Брянск",
"CountryNameCode": "RU",
"CountryName": "Россия",
"AdministrativeArea": {
"AdministrativeAreaName": "Брянская область",
"SubAdministrativeArea": {
"SubAdministrativeAreaName": "городской округ Брянск",
"Locality": {
"LocalityName": "Брянск"
}
}
}
}
}
}
},
"name": "Брянск",
"description": "Россия",
"boundedBy": {
"Envelope": {
"lowerCorner": "34.191155 53.183819",
"upperCorner": "34.557461 53.374503"
}
},
"Point": {
"pos": "34.363425 53.243562"
}
}
},
{
"GeoObject": {
"metaDataProperty": {
"GeocoderMetaData": {
"precision": "other",
"text": "Россия, городской округ Брянск",
"kind": "area",
"Address": {
"country_code": "RU",
"formatted": "Россия, городской округ Брянск",
"Components": [
{
"kind": "country",
"name": "Россия"
},
{
"kind": "province",
"name": "Центральный федеральный округ"
},
{
"kind": "province",
"name": "Брянская область"
},
{
"kind": "area",
"name": "городской округ Брянск"
}
]
},
"AddressDetails": {
"Country": {
"AddressLine": "Россия, городской округ Брянск",
"CountryNameCode": "RU",
"CountryName": "Россия",
"AdministrativeArea": {
"AdministrativeAreaName": "Брянская область",
"SubAdministrativeArea": {
"SubAdministrativeAreaName": "городской округ Брянск"
}
}
}
}
}
},
"name": "городской округ Брянск",
"description": "Россия",
"boundedBy": {
"Envelope": {
"lowerCorner": "34.191155 53.183819",
"upperCorner": "34.685938 53.374503"
}
},
"Point": {
"pos": "34.367683 53.270469"
}
}
},
{
"GeoObject": {
"metaDataProperty": {
"GeocoderMetaData": {
"precision": "other",
"text": "Россия, Брянский район",
"kind": "area",
"Address": {
"country_code": "RU",
"formatted": "Россия, Брянский район",
"Components": [
{
"kind": "country",
"name": "Россия"
},
{
"kind": "province",
"name": "Центральный федеральный округ"
},
{
"kind": "province",
"name": "Брянская область"
},
{
"kind": "area",
"name": "Брянский район"
}
]
},
"AddressDetails": {
"Country": {
"AddressLine": "Россия, Брянский район",
"CountryNameCode": "RU",
"CountryName": "Россия",
"AdministrativeArea": {
"AdministrativeAreaName": "Брянская область",
"SubAdministrativeArea": {
"SubAdministrativeAreaName": "Брянский район"
}
}
}
}
}
},
"name": "Брянский район",
"description": "Россия",
"boundedBy": {
"Envelope": {
"lowerCorner": "33.704825 53.062151",
"upperCorner": "34.980891 53.539789"
}
},
"Point": {
"pos": "34.087876 53.300395"
}
}
},
{
"GeoObject": {
"metaDataProperty": {
"GeocoderMetaData": {
"precision": "other",
"text": "Россия, Брянская область",
"kind": "province",
"Address": {
"country_code": "RU",
"formatted": "Россия, Брянская область",
"Components": [
{
"kind": "country",
"name": "Россия"
},
{
"kind": "province",
"name": "Центральный федеральный округ"
},
{
"kind": "province",
"name": "Брянская область"
}
]
},
"AddressDetails": {
"Country": {
"AddressLine": "Россия, Брянская область",
"CountryNameCode": "RU",
"CountryName": "Россия",
"AdministrativeArea": {
"AdministrativeAreaName": "Брянская область"
}
}
}
}
},
"name": "Брянская область",
"description": "Россия",
"boundedBy": {
"Envelope": {
"lowerCorner": "31.241878 51.843729",
"upperCorner": "35.328333 54.034241"
}
},
"Point": {
"pos": "33.422206 52.909198"
}
}
},
{
"GeoObject": {
"metaDataProperty": {
"GeocoderMetaData": {
"precision": "other",
"text": "Россия, Центральный федеральный округ",
"kind": "province",
"Address": {
"country_code": "RU",
"formatted": "Россия, Центральный федеральный округ",
"Components": [
{
"kind": "country",
"name": "Россия"
},
{
"kind": "province",
"name": "Центральный федеральный округ"
}
]
},
"AddressDetails": {
"Country": {
"AddressLine": "Россия, Центральный федеральный округ",
"CountryNameCode": "RU",
"CountryName": "Россия"
}
}
}
},
"name": "Центральный федеральный округ",
"description": "Россия",
"boundedBy": {
"Envelope": {
"lowerCorner": "30.750266 49.556986",
"upperCorner": "47.641729 59.625176"
}
},
"Point": {
"pos": "38.064727 54.87375"
}
}
},
{
"GeoObject": {
"metaDataProperty": {
"GeocoderMetaData": {
"precision": "other",
"text": "Россия",
"kind": "country",
"Address": {
"country_code": "RU",
"formatted": "Россия",
"Components": [
{
"kind": "country",
"name": "Россия"
}
]
},
"AddressDetails": {
"Country": {
"AddressLine": "Россия",
"CountryNameCode": "RU",
"CountryName": "Россия"
}
}
}
},
"name": "Россия",
"boundedBy": {
"Envelope": {
"lowerCorner": "19.484764 41.185996",
"upperCorner": "191.128012 81.886117"
}
},
"Point": {
"pos": "99.505405 61.698657"
}
}
}
]
}
}
}
Из всего этого мне нужно только одно значение (response - GeoObjectCollection - featureMember - 0 - GeoObject - metaDataProperty - GeocoderMetaData - text). Получить его нужно с помощью Java. Были попытки распарсить с помощью GSON, но из-за достаточно сложной структуры json что-то не получается. Подскажите самый простой способ получить эту строку, может можно без парсинга к ней обратиться?
Ответы (1 шт):
Автор решения: all_possible
→ Ссылка
Решено следующим образом (stringResponse - ответ геокодера в json формате):
JSONObject json = new JSONObject(stringResponse);
final String MyAddress = json.getJSONObject("response")
.getJSONObject("GeoObjectCollection")
.getJSONArray("featureMember")
.getJSONObject(0)
.getJSONObject("GeoObject")
.getJSONObject("metaDataProperty")
.getJSONObject("GeocoderMetaData")
.getString("text");