访问具有名称编号的JSON元素

时间:2017-01-25 23:10:49

标签: javascript json

我试图访问json结构的元素,但不能。我尝试了以下内容。

我正在使用npm包json-query来提取更大的JSON对象的一部分。

var rslt = jsonQuery('results[**][* status=active]', {
                    data: response
                });

var make = JSON.stringify(rslt.value[0]["parms"]["make"]) 

这不起作用,我也尝试从JSON中获取以下数据:

var img = JSON.stringify(rslt.value[0]["photos"]["1"]["320x240"]);

var subtitle = JSON.stringify(rslt.value[0]["parms"]["price"]["1"]) + ' EUR';

这是我正在使用的JSON数据:

{  
   "value":[  
      {  
         "id":7038271775,
         "user_id":1307227,
         "status":"active",
         "title":"",
         "url":"https://www.autovit.ro/anunt/nissan-navara-ID7GjS0w.html",
         "created_at":"2017-01-06 17:49:35",
         "valid_to":"2017-02-03 17:56:16",
         "description":"Data inmatriculare: 02.03.2015.\r\n4x4  \r\nABS  \r\nAer conditionat  \r\nComputer de bord  \r\nGeamuri electrice  \r\nInchidere centralizata  \r\nJante aliaj  \r\nRadio CD  \r\nServodirectie  \r\nVolan multifunctional",
         "category_id":29,
         "region_id":46,
         "city_id":24691,
         "city":{  
            "ro":"Voluntari",
            "en":"Voluntari"
         },
         "coordinates":{  
            "latitude":44.49192877,
            "longitude":26.12458706,
            "radius":0,
            "zoom_level":16
         },
         "advertiser_type":"business",
         "contact":{  
            "person":"LeasePlan Outlet Center",
            "phone_numbers":[  
               "0753312151"
            ]
         },
         "params":{  
            "make":"nissan",
            "model":"navara",
            "year":2014,
            "mileage":16785,
            "engine_capacity":2500,
            "vin":"VSKCVND40U0566467",
            "fuel_type":"diesel",
            "gearbox":"manual",
            "transmission":"all-wheel-lock",
            "particle_filter":"0",
            "green_tax":"1",
            "damaged":"0",
            "body_type":"suv",
            "door_count":4,
            "color":"white",
            "metallic":"0",
            "pearl":"0",
            "matt":"0",
            "rhd":"0",
            "features":[  ],
            "price":{  
               "0":"price",
               "1":15900,
               "currency":"EUR",
               "gross_net":"net"
            },
            "vat":"1",
            "financial_option":"1",
            "leasing_concession":"0",
            "date_registration":"2014-1-01",
            "registered":"1",
            "original_owner":"1",
            "no_accident":"0",
            "service_record":"0",
            "historical_vehicle":"0",
            "tuning":"0"
         },
         "photos":{  
            "1":{  
               "1080x720":"https://img41.autovit.ro/images_autovitro/820558483_1_1080x720.jpg",
               "732x488":"https://img40.autovit.ro/images_autovitro/820558483_1_732x488.jpg",
               "320x240":"https://img42.autovit.ro/images_autovitro/820558483_1_320x240.jpg",
               "148x110":"https://img40.autovit.ro/images_autovitro/820558483_1_148x110.jpg"
            },
            "2":{  
               "1080x720":"https://img41.autovit.ro/images_autovitro/820558483_2_1080x720.jpg",
               "732x488":"https://img42.autovit.ro/images_autovitro/820558483_2_732x488.jpg",
               "320x240":"https://img42.autovit.ro/images_autovitro/820558483_2_320x240.jpg",
               "148x110":"https://img42.autovit.ro/images_autovitro/820558483_2_148x110.jpg"
            },
            "3":{  
               "1080x720":"https://img42.autovit.ro/images_autovitro/820558483_3_1080x720.jpg",
               "732x488":"https://img42.autovit.ro/images_autovitro/820558483_3_732x488.jpg",
               "320x240":"https://img40.autovit.ro/images_autovitro/820558483_3_320x240.jpg",
               "148x110":"https://img42.autovit.ro/images_autovitro/820558483_3_148x110.jpg"
            },
            "4":{  
               "1080x720":"https://img42.autovit.ro/images_autovitro/820558483_4_1080x720.jpg",
               "732x488":"https://img40.autovit.ro/images_autovitro/820558483_4_732x488.jpg",
               "320x240":"https://img42.autovit.ro/images_autovitro/820558483_4_320x240.jpg",
               "148x110":"https://img42.autovit.ro/images_autovitro/820558483_4_148x110.jpg"
            },
            "5":{  
               "1080x720":"https://img41.autovit.ro/images_autovitro/820558483_5_1080x720.jpg",
               "732x488":"https://img41.autovit.ro/images_autovitro/820558483_5_732x488.jpg",
               "320x240":"https://img41.autovit.ro/images_autovitro/820558483_5_320x240.jpg",
               "148x110":"https://img40.autovit.ro/images_autovitro/820558483_5_148x110.jpg"
            },
            "6":{  
               "1080x720":"https://img40.autovit.ro/images_autovitro/820558483_6_1080x720.jpg",
               "732x488":"https://img42.autovit.ro/images_autovitro/820558483_6_732x488.jpg",
               "320x240":"https://img40.autovit.ro/images_autovitro/820558483_6_320x240.jpg",
               "148x110":"https://img42.autovit.ro/images_autovitro/820558483_6_148x110.jpg"
            },
            "7":{  
               "1080x720":"https://img40.autovit.ro/images_autovitro/820558483_7_1080x720.jpg",
               "732x488":"https://img41.autovit.ro/images_autovitro/820558483_7_732x488.jpg",
               "320x240":"https://img40.autovit.ro/images_autovitro/820558483_7_320x240.jpg",
               "148x110":"https://img40.autovit.ro/images_autovitro/820558483_7_148x110.jpg"
            },
            "8":{  
               "1080x720":"https://img42.autovit.ro/images_autovitro/820558483_8_1080x720.jpg",
               "732x488":"https://img41.autovit.ro/images_autovitro/820558483_8_732x488.jpg",
               "320x240":"https://img42.autovit.ro/images_autovitro/820558483_8_320x240.jpg",
               "148x110":"https://img40.autovit.ro/images_autovitro/820558483_8_148x110.jpg"
            },
            "9":{  
               "1080x720":"https://img41.autovit.ro/images_autovitro/820558483_9_1080x720.jpg",
               "732x488":"https://img40.autovit.ro/images_autovitro/820558483_9_732x488.jpg",
               "320x240":"https://img40.autovit.ro/images_autovitro/820558483_9_320x240.jpg",
               "148x110":"https://img42.autovit.ro/images_autovitro/820558483_9_148x110.jpg"
            },
            "10":{  
               "1080x720":"https://img41.autovit.ro/images_autovitro/820558483_10_1080x720.jpg",
               "732x488":"https://img42.autovit.ro/images_autovitro/820558483_10_732x488.jpg",
               "320x240":"https://img40.autovit.ro/images_autovitro/820558483_10_320x240.jpg",
               "148x110":"https://img40.autovit.ro/images_autovitro/820558483_10_148x110.jpg"
            },
            "11":{  
               "1080x720":"https://img42.autovit.ro/images_autovitro/820558483_11_1080x720.jpg",
               "732x488":"https://img42.autovit.ro/images_autovitro/820558483_11_732x488.jpg",
               "320x240":"https://img41.autovit.ro/images_autovitro/820558483_11_320x240.jpg",
               "148x110":"https://img42.autovit.ro/images_autovitro/820558483_11_148x110.jpg"
            }
         },
         "image_collection_id":820558483,
         "last_update_date":"2017-01-24 18:00:26",
         "new_used":"used"
      }
   ],
   "is_last_page":false,
   "is_first_page":true,
   "current_page":1,
   "total_pages":33,
   "current_elements":1,
   "total_elements":33
}

2 个答案:

答案 0 :(得分:2)

我不知道什么是“json-query”,但我认为你可以像这样安全地提取任何JSON部分;

function dig(input, key) {
    var keys = (""+ key).split("."), key = keys.shift();
    if (!keys.length) {
        return input[key];
    }
    return dig(input[key], keys.join("."));
}

// here that gives me already without any error thrown >> https://img42.autovit.ro/images_autovitro/820558483_1_320x240.jpg
var p = dig(rslt, "results.0.photos.1.320x240");
console.log(p);

// this is same with
console.log(rslt.results[0].photos[1]["320x240"]);

致谢:https://github.com/yay-couch/couch-js/blob/master/couch/util/util.js#L46

答案 1 :(得分:1)

我不确定它是如何工作的,我在您的代码中看到的唯一问题是您写错params而写错parms

enter image description here