JSON vs. XML using webread()

5 views (last 30 days)
Jeffrey
Jeffrey on 2 Aug 2015
Commented: Kevin Lapret on 4 Aug 2015
I have a url that I am able to get data when I set the output to xml as an optional parameter in the url, but when I set it to json, I get NaN... the url is 'http://api.eia.gov/series/?api_key=####&series_id=NG.RNGC1.D&out=json' where #### is a private key. Any ideas? I am able to get a struct array when I use the World Bank Climate example in Matlab help documentation.
  1 Comment
Kevin Lapret
Kevin Lapret on 4 Aug 2015
Not sure what you will be doing with the JSON data but if you want to convert it to a more import friendly format, there are some JSON to CSV converters like json-csv.com

Sign in to comment.

Accepted Answer

Robert Snoeberger
Robert Snoeberger on 3 Aug 2015
The JSON text received from the web service contains the UTF-8 byte order mark (BOM), , at the beginning [1]. The BOM is causing the JSON parser to fail. You can see the BOM by calling webread with a content type of text.
>> url = 'http://api.eia.gov/series/?api_key=####&series_id=NG.RNGC1.D&out=json';
>> webread(url, weboptions('ContentType', 'text'))
ans =
{"request":{"command":"series"},"data":{"error":"No api_key. For key registration, documentation, and examples see http:\/\/www.eia.gov\/developer\/"}}
>>
[1] See byte order mark for UTF-8 encoding in Representation of byte order marks by encoding

More Answers (1)

Jeffrey
Jeffrey on 3 Aug 2015
That's very helpful, thank you...

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!