2016-05-20 2 views
0

Я не знаком с JSON, я в основном делаю PHP. Когда я запускаю запрос к API геокодирования Mapquest, я получаю следующую строку json, которая становится «NULL» при попытке json_decode в PHP.Проблема с синтаксисом JSON

renderOptions({ 
    "info": { 
     "statuscode": 0, 
     "copyright": { 
      "text": "\u00A9 2016 MapQuest, Inc.", 
      "imageUrl": "https://api.mqcdn.com/res/mqlogo.gif", 
      "imageAltText": "\u00A9 2016 MapQuest, Inc." 
     }, 
     "messages": [] 
    }, 
    "options": { 
     "maxResults": -1, 
     "thumbMaps": true, 
     "ignoreLatLngInput": false 
    }, 
    "results": [{ 
     "providedLocation": { 
      "street": "Kingston Upon Thames,uk" 
     }, 
     "locations": [{ 
      "street": "", 
      "unknownInput": "", 
      "type": "s", 
      "latLng": { 
       "lat": 51.409628, 
       "lng": -0.306262 
      }, 
      "displayLatLng": { 
       "lat": 51.409628, 
       "lng": -0.306262 
      }, 
      "mapUrl": "https://open.mapquestapi.com/staticmap/v4/getmap?key=na&type=map&size=225,160&pois=purple-1,51.4096275,-0.3062621,0,0,|¢er=51.4096275,-0.3062621&zoom=12&rand=54353" 
     }] 
    }] 
}) 

Запуск через JSONLint, я получаю следующее сообщение об ошибке:

Error: Parse error on line 1: renderOptions({ "in^Expecting 'STRING', 'NUMBER', 'NULL', 'TRUE', 'FALSE', '{', '[', got 'undefined'

Я предположил бы, что исправить это довольно просто, но я не слишком в курсе синтаксиса JSON, так что я был возиться с помещением материала до «renderOptions».

Каков был бы правильный синтаксис для устранения проблемы?

+0

http://stackoverflow.com/questions/2887209/what-are-the-differences-between-json-and-jsonp – michaJlS

+1

Вы возвращаетесь к JSONP в отличие от JSON. Прочтите ссылку, размещенную в комментарии выше моего, и просмотрите документацию Mapquest о том, как вернуть JSON вместо этого. – JAAulde

ответ

0

Это будет правильным JSon

{ 
    "renderOptions": { 
     "info": { 
      "statuscode": 0, 
      "copyright": { 
       "text": "\u00A9 2016 MapQuest, Inc.", 
       "imageUrl": "https://api.mqcdn.com/res/mqlogo.gif", 
       "imageAltText": "\u00A9 2016 MapQuest, Inc." 
      }, 
      "messages": [] 
     }, 
     "options": { 
      "maxResults": -1, 
      "thumbMaps": true, 
      "ignoreLatLngInput": false 
     }, 
     "results": [{ 
      "providedLocation": { 
       "street": "Kingston Upon Thames,uk" 
      }, 
      "locations": [{ 
       "street": "", 
       "unknownInput": "", 
       "type": "s", 
       "latLng": { 
        "lat": 51.409628, 
        "lng": -0.306262 
       }, 
       "displayLatLng": { 
        "lat": 51.409628, 
        "lng": -0.306262 
       }, 
       "mapUrl": "https://open.mapquestapi.com/staticmap/v4/getmap?key=na&type=map&size=225,160&pois=purple-1,51.4096275,-0.3062621,0,0,|¢er=51.4096275,-0.3062621&zoom=12&rand=54353" 
      }] 
     }] 
    } 
} 
1

Удалите renderOptions() и то, что внутри этих скобок JSON, начиная с первым кудрявым и заканчивая последние кудрявый.

+1

OP получает это как ответ от стороннего API ... – JAAulde

0

в вашем URL-адресе службы геокодирования mapquest, у вас будет параметр «callback = renderOptions» - возможно, скопирован &, вставленный из примера. Удалите этот параметр, чтобы удалить обкатку обратного вызова.

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