【问题标题】:Complex JSON string Parsing in JavaScriptJavaScript 中复杂的 JSON 字符串解析
【发布时间】:2013-01-06 20:35:13
【问题描述】:

这是我的示例 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 很陌生,我需要以通用方式访问嵌套元素。

我无法正确提取详细信息。我在访问嵌套的子元素时遇到了困难。

  1. 对我来说问题是我不会总是知道“键”的名称来访问它们,JSON 将是动态的,因此我需要一个通用机制来访问嵌套的子元素。嵌套可以去最多 3 -4 级。

  2. 当嵌套很深时,我们使用什么表示法来访问键/值对。

任何帮助将不胜感激。

【问题讨论】:

  • 您打算如何显示这些元素?通过警报?
  • 我实际上需要用这些 JSON 构建一个对象。我已经添加了警报,例如缘故..
  • 我不明白,在var Data = JSON.parse(c); 之后数据将包含所有易于访问的内容(例如Data.Travel.BusProvider.Name === 'SRS')。为什么需要另一种解析方法?
  • Parsing Complex JSON in JS or jQuery 的可能重复项——您已经问过这个问题,它已作为重复项关闭。在另一个问题中,解释了如何使用for...in 迭代对象。不过,我会更新它以提及递归。

标签: javascript jquery json parsing


【解决方案1】:

在反序列化您的对象后,您可以这样做

var resultJSON = '{"name":"ricardo","age":"23"}';
var result = $.parseJSON(resultJSON);
$.each(result, function(k, v) {
    //display the key 
    alert(k + ' is the key)
}

你可以像这样使用递归的offcourse来做到这一点 - Link Here 方法是一样的,只是适应你的例子

【讨论】:

    【解决方案2】:

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

    但如果你甚至不能动态定义属性的名称,那么你应该使用

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-24
      • 1970-01-01
      • 2016-06-20
      相关资源
      最近更新 更多