无法访问Javascript中对象的字段

无法访问Javascript中对象的字段,javascript,Javascript,我正在尝试处理一个用JSON传递到网页的对象,甚至在访问其中的字段时都遇到了问题。 对象的格式为 { "tag":{ "edges":{ "start1":"end1", "start2":"end2" }, "nodes":[ "node1", "node2" ] } } 这是我的功能: function processSimilarMap(ob

我正在尝试处理一个用JSON传递到网页的对象,甚至在访问其中的字段时都遇到了问题。 对象的格式为

{  
   "tag":{  
      "edges":{  
         "start1":"end1",
         "start2":"end2"
      },
      "nodes":[  
         "node1",
         "node2"
      ]
   }
}
这是我的功能:

function processSimilarMap(obj){
    for(var o in obj){
        if(obj.hasOwnProperty(o)){
            var k=obj[o];
            var nodes=k.nodes;//cannot find the field here
            console.log(nodes);
            var edges=k.edges;//cannot find the field here
            console.log(edges);
            for(var i=0;i<nodes.length;i++){
                    //do something
            }
            for(var e in edges){
                if(edges.hasOwnProperty(e)){
                    //do something
                }
            }

        }
    }
}
函数处理相似映射(obj){
用于(obj中的var o){
if(对象hasOwnProperty(o)){
var k=obj[o];
var nodes=k.nodes;//在此处找不到字段
console.log(节点);
var edges=k.edges;//在此处找不到字段
控制台。原木(边缘);

对于(var i=0;i似乎正在工作,可能您没有将Json字符串解析为对象

var myJson = '{"tag":{"edges":{"start1":"end1","start2":"end2"},"nodes":["node1","node2"]}}';
processSimilarMap(JSON.parse(myJson));

这似乎对我有用:

如果它只是一个JSON字符串或(我很抱歉问了这么一个愚蠢的问题,但只是先检查最简单的选项),您确定您正在解析它吗您确定调用了函数并传递了正确的对象吗?这是一种更优雅的方式。如果此对象是动态循环的,则属性循环是确保始终处理所有内容的最佳方式。如果您知道对象的结构将始终相同,则可以使用点表示法访问它

    var tag = obj.tag;
    var nodes = tag.nodes;
    var edges = tag.edges;
    for (var i = 0; i < nodes.length; i++) {
        // do something with nodes
    }
    for (var e in edges) {
        if (edges.hasOwnProperty(e)) {
            // do something with edges
        }
    }

它对我来说工作得很好,你是如何调用函数的?最后我发现了一个被诅咒的打字错误,它使json格式错误(“而不是json字符串中的双引号”).我在解析时转换了它,从那时起一切都正常工作…我不得不复杂地说,你是正确的XD。非常感谢你的回答。我之前不确定我的函数是否正常工作。@OrlandoL没问题!很乐意帮助。出于好奇,为什么会有复杂的感觉?我很高兴看到问题得到解决,但你知道,当你发现这个bug太愚蠢了……@OrlandoL哦,好吧。对不起,我理解了你的意思。一开始我误解了。:)非常感谢你的回复!很高兴知道它确实按照预期工作,但错误存在于我的json格式中。
    var tag = obj.tag;
    var nodes = tag.nodes;
    var edges = tag.edges;
    for (var i = 0; i < nodes.length; i++) {
        // do something with nodes
    }
    for (var e in edges) {
        if (edges.hasOwnProperty(e)) {
            // do something with edges
        }
    }
obj['tag'];