获取名称中带有“点”的json对象属性

时间:2018-09-07 10:06:29

标签: json object attributes

***问题解决了:json.stringify是问题..它消失后更容易处理。

var DBName = result['Document']['SW.Blocks.GlobalDB']['AttributeList']['Name'];

我有一个xml文件,该文件描述了PLC的数据块,并希望通过JS获取特定值。 我使用xml2js模块进行了转换,因此我可以使用json对象。

{
   "Document": {
      "Engineering": {
         "$": {
            "version": "V15"
         }
      },
      "SW.Blocks.GlobalDB": {
         "$": {
            "ID": "0"
         },             
        "HeaderAuthor": "",
        "HeaderFamily": "",
        "HeaderName": "",
        "HeaderVersion": "0.1",
        "Interface": {
 ... 
 ...
           "Name": "datentypen",
           "Number": "6",
           "ParameterModified": {
              "_": "2018-09-05T11:49:37.0862092Z",
              "$": {
                 "ReadOnly": "true"
              }
           },
        }
}

我想打印出“名称”和“数字”,它们是“ AttributeList”的一部分。 那么如何处理“ SW.Blocks.GlobalDB”呢?

获取错误:“ TypeError:无法读取未定义的属性'SW'”

var fs = require('fs');
var xml2js = require('xml2js');
var xml = fs.readFileSync('datentypen.xml');
var parser = new xml2js.Parser({explicitArray: false});

parser.parseString(xml, function(err, result) {
    if (err) {
      console.error('xml2js.parse error: ',err);
    } else {
      var injson = JSON.stringify(result,null,3);
      console.log(injson);
//      var injson2 = JSON.parse(injson);
//      var DBnummer = injson.Document.SW.Blocks.GlobalDB.AttributeList["Name","Number"];
//      console.log(DBNummer);
    };
});

我读了很多关于这个主题的书,但是没有找到具体的答案。 当我写[“ SW.Blocks.GlobalDB”]时,出现关于[的错误。

1 个答案:

答案 0 :(得分:0)

您可以尝试使用键值对读取JSON数组吗?我遇到过类似的问题,但是编程语言不同。