从使用点表示法构建的JSON对象访问文本

时间:2017-09-23 23:25:00

标签: javascript json object

刚刚学习如何为宠物收养网站构建和阅读json对象我作为一个爱好项目工作。一位朋友建议我建一个这样的:

var userData = {};
userData['dogs'] = {};
userData.dogs['Spot'] = {};
userData.dogs.Spot['color'] = 'black';
userData.dogs.Spot['weight'] = '24lbs';
userData.dogs.Spot['location'] = 'Washington';
userData.dogs.Spot['comments'] = 'this is a long string of text';

我已经想出如何对此进行字符串化,存储,检索和解析它,但我无法弄清楚如何访问各个信息(例如权重)。使用userData中的点到userData.dogs到userData.dogs.spot构建像这样的对象是标准的吗?我如何访问每个属性?

2 个答案:

答案 0 :(得分:1)

  1. 不,构建这样的对象并不标准,因为它使用迭代步骤(即一个程序),而JSON是一个声明性文字(请记住: J ava S crpt O bject N \ notation )。您可以像这样表达相同的最终对象:

    userData = {
        "dogs": {
            "Spot": {
                "color": "black",
                "weight": "241lbs",
                "location": "Washington",
                "comments": "this is a big dog, 241lbs, wow"
            }
        }
    };
    

    请注意"纯" JSON需要双引号分隔键。脚本中的对象 - 文字可以使用没有引号的标准标识符。

  2. 您可以使用虚线表示法访问它们。如果对象具有不符合JavaScript标识符限制的键(例如,没有空格,标点符号,必须以字母开头等),则只需使用string-indexer属性语法:

    console.log(userData.dogs.Spot.color); console.log(userData.dogs.Spot.comments);

答案 1 :(得分:1)

var userData = {
  dogs: {
     spots: {
      color: 'black',
      weight: 'x lbs',
      anotherKey: 'some value'
   }
  }
 };

你做的和上面一样。如果您是初学者,可以在此处阅读有关JavaScript对象的更多信息:https://www.w3schools.com/js/js_objects.asp。如果您更中间,可以在此处阅读:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object