check to see if a sub array exists in JSON
Here is the json Sample:
{
"kind": "shopping#product",
"id": "tag:google.com,2010:shopping/products/6582229/17914968800165668776",
"selfLink": "https://www.googleapis.com/shopping/search/v1/public/products/6582229/gid/17914968800165668776?alt\u003djson",
"product": {
"googleId": "17914968800165668776",
"author": {
"name": "Red Tag Market",
"accountId": "6582229"
},
"creationTime": "2010-11-30T10:00:00.000Z",
"modificationTime": "2011-05-01T09:20:00.000Z",
"country": "US",
"lang开发者_JAVA百科uage": "en",
"title": "The Fantastic Mr. Fox - BLU-RAY/DVD",
"description": "Wit.",
"link": "ht361",
"condition": "new",
"gtin": "00024543657552",
"inventories": [
{
"channel": "online",
"price": 22.51,
"currency": "USD"
}
],
"images": [
{
"link": "http://208.131.143.232/i/6/3/0/7/6/1/8.jpg",
"thumbnails": [
{
"width": 60,
"height": 60,
"link": "hBEevU46OsArJElwIeErF_3E7Zzu12M2eLSvQBdYiMLaRWrI60aF8lHxRqOz-wkx2YJUIVdCrzrEQDWxgcc"
}
]
}
]
}
},
{
"kind": "shopping#product",
"id": "tag:google.com,2010:shopping/products/6296724/17894083551590155418",
"selfLink": "https://www.googleapis.com/shopping/search/v1/public/products/6296724/gid/17894083551590155418?alt\u003djson",
"product": {
"googleId": "17894083551590155418",
"author": {
"name": "eBay",
"accountId": "6296724"
},
"creationTime": "2011-04-04T00:43:02.000Z",
"modificationTime": "2011-04-04T00:43:02.000Z",
"country": "US",
"language": "en",
"title": "Fy.",
"link": "htt530831212&itemid\u003d140530831212&icep_meta_categ_id\u003d11232",
"condition": "used",
"gtin": "00024543657552",
"inventories": [
{
"channel": "online",
"price": 14.99,
"currency": "USD"
}
],
"images": [
{
"link": "http://i.ebayimg.com/00/%24%28KGrHqYOKkQE1r4Vh1gFBNl4n0t17g%7E%7E_1.JPG?set_id\u003d8800005007",
"thumbnails": [
{
"width": 60,
"height": 60,
"link": "http://lh
}
]
}
]
}
}
What I want to do is see if data.items[i].product.images[]
exists or not. as you can see the Images array does not present in the second response thus killing my javascript at the point I try to use data.items[i].product.images[]
for any purpose. I have been looking and have yet to find a solution.
Edit: I just tried this and still no dice:
if(data.items[i].product.images !== undefined){
var image = 'images/inverticon.png';
}else{
var image = data.items[i].product.images[0].thumbnails[0].link;
}
I do not get any errors, the script just stops running. If I omit the image code everything works fine and as long as the returned JSON has the image[] it works fine.
Edit: here is the solution:
if(data.items[i].product.images !== undefined){
var image = data.items[i].product.images[0].thumbnails[0].link;
}else{
var image = 'images/inverticon.png';
}
if (data.items[i].product.images !== undefined) {
//do what you will
}
trying to access a property of an object that does not exist will return undefined. That's most likely the error you were getting?
Do you know about the web inspector tool in web browsers? They all have a console that any errors get outputted to. If you check that, then you'll see what's wrong.
You're still trying to access the images array in the else of that condition statement, that will cause an error.
It should be like this,
if(data.items[i].product.images !== undefined){
var image = data.items[i].product.images[0].thumbnails[0].link;
} else {
var image = 'images/inverticon.png';
}
'not equal to undefined' is equivalent to saying 'is defined'
Is there a reason you don't parse it into a PHP array then check? You tagged your post PHP so I assume that's what you're using.
$myarray = json_decode($json);
if (isset($myarray->items[0]->product->images)) {
...
}
精彩评论