Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript中的复杂JSON字符串解析_Javascript_Jquery_Json_Parsing - Fatal编程技术网

JavaScript中的复杂JSON字符串解析

JavaScript中的复杂JSON字符串解析,javascript,jquery,json,parsing,Javascript,Jquery,Json,Parsing,这是我的示例JSON文件,我正在尝试解析和读取这些值 C = {{ "Travel": { "ServiceProvider": { "Name": "SRS", "Rating": "3 stars", "Rates": "Nominal", "Features": { "OnlineBooking": "Yes",

这是我的示例JSON文件,我正在尝试解析和读取这些值

C = {{
    "Travel": {
        "ServiceProvider": {
            "Name": "SRS",
            "Rating": "3 stars",
            "Rates": "Nominal",
            "Features": {
                "OnlineBooking": "Yes",
                "SMS_Ticket": "No"
            },
            "UserDetails": {
                "Name": "Jack",
                "Age": "33",
                "Gender": "Male"
            }
        },
        "BusProvider": {
            "Name": "SRS",
            "Rating": "3 stars",
            "Rates": "Nominal",
            "Features": {
                "OnlineBooking": "Yes",
                "SMS_Ticket": "No"
            },
            "UserDetails": {
                "Name": "Jack",
                "Age": "33",
                "Gender": "Male"
            }
        }
    }
}
我对JS非常陌生,需要以通用方式访问嵌套元素

我无法正确提取细节。我无法访问嵌套的子元素

  • 对我来说,问题是我并不总是知道访问它们的“键”的名称,JSON将是动态的,因此我需要一种通用机制来访问嵌套的子元素。嵌套可以达到3-4个级别

  • 当嵌套很深时,我们使用什么符号来访问键/值对


  • 任何帮助都将不胜感激。

    在对您的对象进行理想化之后,您可以这样做

    var resultJSON = '{"name":"ricardo","age":"23"}';
    var result = $.parseJSON(resultJSON);
    $.each(result, function(k, v) {
        //display the key 
        alert(k + ' is the key)
    }
    
    你可以像这样用递归的方式来做-
    方法是一样的,只需适应您的示例

    对于动态访问,您可以使用括号表示法,即
    var json={nonKnown:1};
    现在您可以这样访问它: var unknowPropertyName=“nonKnown”; var value=json[unknownPropertyName]

    但若您甚至不能动态定义属性的名称,那个么您应该使用

    for(variableName in json){
      if(json.hasOwnProperty(variableName)){
        console.log(variableName);
      }
    }
    

    你应该从中得到基本的想法。祝你好运

    你打算如何显示这些元素?通过警报?我实际上需要用这些JSON构建一个对象。我添加警报只是为了举例。参考我不明白,在
    var Data=JSON.parse(c)之后;
    数据将包含所有易于访问的内容(例如,
    Data.Travel.BusProvider.Name==='SRS'
    )。为什么需要另一个解析方法?可能是重复的--您已经问过这个问题,它以重复的形式关闭。在另一个问题中,它解释了如何在中使用
    for…对对象进行迭代。不过,我将更新它,以提及递归。