Jump to content


Check out our Community Blogs

Register and join over 40,000 other developers!


Recent Status Updates

View All Updates

Photo
- - - - -

'item' property showing up as undefined when parsing JSON

json javascript parse ebay api

This topic has been archived. This means that you cannot reply to this topic.
4 replies to this topic

#1 ghobs91

ghobs91

    CC Lurker

  • New Member
  • Pip
  • 6 posts

Posted 02 April 2014 - 03:27 PM

I'm writing cloud code using the Parse backend service that will ping eBay, return item information in JSON, and then parse the JSON with certain functions. When I run the functions from my iOS app, I get the following error, what could be causing this? 
    TypeError: Cannot read property 'item' of undefined
        at Object.Parse.Cloud.httpRequest.success (main.js:32:71)
        at Object.<anonymous> (<anonymous>:565:19) (Code: 141, Version: 1.2.18)
In my cloud code, I 've tried defining item, but I'm still getting the same error. My cloud code is below. 
 
main.js:
Parse.Cloud.define("eBayCategorySearch", function(request, response) {
              url = 'http://svcs.ebay.com/services/search/FindingService/v1';
    
      Parse.Cloud.httpRequest({
          url: url,
          params: {  
           'OPERATION-NAME' : 'findItemsByKeywords', 
           'SERVICE-VERSION' : '1.12.0',
           'SECURITY-APPNAME' : 'APP ID GOES HERE',
           'GLOBAL-ID' : 'EBAY-US',
           'RESPONSE-DATA-FORMAT' : 'JSON',
           'itemFilter(0).name=ListingType' : 'itemFilter(0).value=FixedPrice',
           'keywords' : request.params.item,
    
            // your other params
         },
          success: function (httpResponse) {
              
    
              var response = JSON.parse(httpResponse.text)  
              var findItemsByKeywordsResponse = response.findItemsByKeywordsResponse
              var searchResult = response.findItemsByKeywordsResponse.searchResult
              var item = response.findItemsByKeywordsResponse.searchResult.item
    
    
              // count number of times each unique primaryCategory shows up (based on categoryId), return top two 
    
              var categoryResults = {};
    
    
              // var data = httpResponse.data
    
              response.findItemsByKeywordsResponse.searchResult[0].item.forEach(function(item) 
              {
              var id = item.primaryCategory[0].categoryId;
              if (categoryResults[id]) categoryResults[id]++;
              else categoryResults[id] = 1;
              });
    
              var top2 = Object.keys(categoryResults).sort(function(a, b) 
                {return categoryResults[b]-categoryResults[a]; }).slice(0, 2);
              console.log('Top two categories: ' + top2.join(', '));
    
    
              response.success(httpResponse.data)
    
              // compare categoryResults to userCategories
    
              var AnyItemsOfCategoryResultsInUserCategories = categoryResults.some(function(item) {
              return userCategories.indexOf(item) > -1;
              });
              console.log(AnyItemsOfCategoryResultsInUserCategories);
    
              var ItemsOfCategoryResultsInUserCategories = categoryResults.filter(function(item) {
              return userCategories.indexOf(item) > -1;
              });
              console.log(ItemsOfCategoryResultsInUserCategories);
    
              // if user has criteria info for one of the categories already, default to that, send to matchcenter, clear categoryResults array
    
              // if user has criteria for both categories, ask which one, default to selected categories criteria, send to matchcenter, clear categoryResults array
    
              // if user has no criteria for either category, ask which one, redirect to criteriaViewController, save the criteria user inputs, send to matchcenter, and clear categoryResults array
    
      },
                error: function (httpResponse) {
                    console.log('error!!!');
                    console.error('Request failed with response code ' + httpResponse.status);
                }
           });
    });
 
 
This is how the JSON for two items should look when properly returned:
    {
       "findItemsByKeywordsResponse":[
          {
             "ack":[
                "Success"
             ],
             "version":[
                "1.12.0"
             ],
             "timestamp":[
                "2014-03-26T18:29:40.583Z"
             ],
             "searchResult":[
                {
                   "@count":"100",
                   "item":[
                      {
                         "itemId":[
                            "151258132867"
                         ],
                         "title":[
                            "Apple iPhone 4 - clean esn - Black (Verizon) Smartphone"
                         ],
                         "globalId":[
                            "EBAY-US"
                         ],
                         "primaryCategory":[
                            {
                               "categoryId":[
                                  "9355"
                               ],
                               "categoryName":[
                                  "Cell Phones & Smartphones"
                               ]
                            }
                         ],
                         "galleryURL":[
                            "http:\/\/thumbs4.ebaystatic.com\/m\/mGwHzpyvkph9-nU12sCspxw\/140.jpg"
                         ],
                         "viewItemURL":[
                            "http:\/\/www.ebay.com\/itm\/Apple-iPhone-4-clean-esn-Black-Verizon-Smartphone-\/151258132867?pt=Cell_Phones"
                         ],
                         "productId":[
                            {
                               "@type":"ReferenceID",
                               "__value__":"101787954"
                            }
                         ],
                         "paymentMethod":[
                            "PayPal"
                         ],
                         "autoPay":[
                            "false"
                         ],
                         "postalCode":[
                            "93905"
                         ],
                         "location":[
                            "Salinas,CA,USA"
                         ],
                         "country":[
                            "US"
                         ],
                         "shippingInfo":[
                            {
                               "shippingServiceCost":[
                                  {
                                     "@currencyId":"USD",
                                     "__value__":"0.0"
                                  }
                               ],
                               "shippingType":[
                                  "Free"
                               ],
                               "shipToLocations":[
                                  "US"
                               ],
                               "expeditedShipping":[
                                  "true"
                               ],
                               "oneDayShippingAvailable":[
                                  "false"
                               ],
                               "handlingTime":[
                                  "2"
                               ]
                            }
                         ],
                         "sellingStatus":[
                            {
                               "currentPrice":[
                                  {
                                     "@currencyId":"USD",
                                     "__value__":"96.0"
                                  }
                               ],
                               "convertedCurrentPrice":[
                                  {
                                     "@currencyId":"USD",
                                     "__value__":"96.0"
                                  }
                               ],
                               "bidCount":[
                                  "17"
                               ],
                               "sellingState":[
                                  "Active"
                               ],
                               "timeLeft":[
                                  "P0DT0H0M11S"
                               ]
                            }
                         ],
                         "listingInfo":[
                            {
                               "bestOfferEnabled":[
                                  "false"
                               ],
                               "buyItNowAvailable":[
                                  "false"
                               ],
                               "startTime":[
                                  "2014-03-19T18:29:51.000Z"
                               ],
                               "endTime":[
                                  "2014-03-26T18:29:51.000Z"
                               ],
                               "listingType":[
                                  "Auction"
                               ],
                               "gift":[
                                  "false"
                               ]
                            }
                         ],
                         "returnsAccepted":[
                            "false"
                         ],
                         "condition":[
                            {
                               "conditionId":[
                                  "3000"
                               ],
                               "conditionDisplayName":[
                                  "Used"
                               ]
                            }
                         ],
                         "isMultiVariationListing":[
                            "false"
                         ],
                         "topRatedListing":[
                            "false"
                         ]
                      },
                      {
                         "itemId":[
                            "360810145746"
                         ],
                         "title":[
                            "U Apple iPhone 3GS - 8GB - Black (FACTORY UNLOCKED) Smartphone (C)"
                         ],
                         "globalId":[
                            "EBAY-US"
                         ],
                         "subtitle":[
                            "****USA SELLER*****FAST SHIPPING*****TOP SELLER****"
                         ],
                         "primaryCategory":[
                            {
                               "categoryId":[
                                  "9355"
                               ],
                               "categoryName":[
                                  "Cell Phones & Smartphones"
                               ]
                            }
                         ],
                         "galleryURL":[
                            "http:\/\/thumbs3.ebaystatic.com\/m\/mQGXy5hucEtqk6inUKFu67g\/140.jpg"
                         ],
                         "viewItemURL":[
                            "http:\/\/www.ebay.com\/itm\/U-Apple-iPhone-3GS-8GB-Black-FACTORY-UNLOCKED-Smartphone-C-\/360810145746?pt=Cell_Phones"
                         ],
                         "productId":[
                            {
                               "@type":"ReferenceID",
                               "__value__":"99984545"
                            }
                         ],
                         "paymentMethod":[
                            "PayPal"
                         ],
                         "autoPay":[
                            "true"
                         ],
                         "postalCode":[
                            "10001"
                         ],
                         "location":[
                            "New York,NY,USA"
                         ],
                         "country":[
                            "US"
                         ],
                         "shippingInfo":[
                            {
                               "shippingServiceCost":[
                                  {
                                     "@currencyId":"USD",
                                     "__value__":"0.0"
                                  }
                               ],
                               "shippingType":[
                                  "Free"
                               ],
                               "shipToLocations":[
                                  "US",
                                  "CA",
                                  "GB",
                                  "AU",
                                  "FR",
                                  "HK",
                                  "MT",
                                  "IE",
                                  "IL",
                                  "NZ",
                                  "PH",
                                  "SG"
                               ],
                               "expeditedShipping":[
                                  "true"
                               ],
                               "oneDayShippingAvailable":[
                                  "false"
                               ],
                               "handlingTime":[
                                  "1"
                               ]
                            }
                         ],
                         "sellingStatus":[
                            {
                               "currentPrice":[
                                  {
                                     "@currencyId":"USD",
                                     "__value__":"84.95"
                                  }
                               ],
                               "convertedCurrentPrice":[
                                  {
                                     "@currencyId":"USD",
                                     "__value__":"84.95"
                                  }
                               ],
                               "sellingState":[
                                  "Active"
                               ],
                               "timeLeft":[
                                  "P12DT0H9M11S"
                               ]
                            }
                         ],
                         "listingInfo":[
                            {
                               "bestOfferEnabled":[
                                  "false"
                               ],
                               "buyItNowAvailable":[
                                  "false"
                               ],
                               "startTime":[
                                  "2013-12-08T18:33:51.000Z"
                               ],
                               "endTime":[
                                  "2014-04-07T18:38:51.000Z"
                               ],
                               "listingType":[
                                  "StoreInventory"
                               ],
                               "gift":[
                                  "false"
                               ]
                            }
                         ],
                         "returnsAccepted":[
                            "true"
                         ],
                         "condition":[
                            {
                               "conditionId":[
                                  "3000"
                               ],
                               "conditionDisplayName":[
                                  "Used"
                               ]
                            }
                         ],
                         "isMultiVariationListing":[
                            "false"
                         ],
                         "discountPriceInfo":[
                            {
                               "originalRetailPrice":[
                                  {
                                     "@currencyId":"USD",
                                     "__value__":"449.0"
                                  }
                               ],
                               "pricingTreatment":[
                                  "STP"
                               ],
                               "soldOnEbay":[
                                  "false"
                               ],
                               "soldOffEbay":[
                                  "false"
                               ]
                            }
                         ],
                         "topRatedListing":[
                            "true"
                         ]
                      } 

 

 

and here is my objective-c function:
 

    - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
    {
        if (sender != self.nextButton) return;
        if (self.itemSearch.text.length > 0) {
            
            [PFCloud callFunctionInBackground:@"eBayCategorySearch"
                               withParameters:@{@"item": self.itemSearch.text}
                                        block:^(NSString *result, NSError *error) {
                                            if (!error) {
                                                NSLog(@"Successfully pinged eBay!");
                                            }
                                            
                                        }];
        
        
        }
        
        // Get the new view controller using [segue destinationViewController].
        // Pass the selected object to the new view controller.
        
    }

Edited by ghobs91, 02 April 2014 - 03:30 PM.


#2 wim DC

wim DC

    Roar

  • Expert Member
  • PipPipPipPipPipPipPipPip
  • 2681 posts

Posted 02 April 2014 - 11:04 PM

To me that looks like the returned JSON has no searchResult.

 

Try printing or logging the http response you get and see what ebay is truly returning. It's probably different than what you expect.



#3 WingedPanther73

WingedPanther73

    A spammer's worst nightmare

  • Moderator
  • 17757 posts

Posted 03 April 2014 - 04:06 AM

If you use Chrome, you can use it's debugging features to see exactly what is sent by every response, including AJAX calls.


Programming is a branch of mathematics.
My CodeCall Blog | My Personal Blog

My MineCraft server site: http://banishedwings.enjin.com/


#4 ghobs91

ghobs91

    CC Lurker

  • New Member
  • Pip
  • 6 posts

Posted 03 April 2014 - 08:41 AM

To me that looks like the returned JSON has no searchResult.

 

Try printing or logging the http response you get and see what ebay is truly returning. It's probably different than what you expect.

I've tried making a breakpoint in iOS and calling "po result" on :

block:^(NSString *result, NSError *error)

 but all I get is "null". Does this mean that the function isn't receiving an http response from eBay, or am I not calling it correctly?



#5 wim DC

wim DC

    Roar

  • Expert Member
  • PipPipPipPipPipPipPipPip
  • 2681 posts

Posted 03 April 2014 - 08:45 AM

You surely have a response or it would throw an error of "searchResult" not being found at

var searchResult = response.findItemsByKeywordsResponse.searchResult

Edited by wim DC, 03 April 2014 - 08:45 AM.