javascript - 为什么我无法对 json 数据调用 .get/如何将 json 转换为 map

标签 javascript json

我正在尝试为一个以 map 作为参数的函数编写测试,

当代码在测试之外正常运行时,参数可以采用以下形式(当我调用 toString 时):

Map { "id": "jobs", "label": "Jobs", "nodeType": "ROOT", "childNodesURI": "jobs?owner=*", "childIds": List [ ], "isFetchingChildren": false, "isToggled": true, "jobName": ""}

var node = {
                id: "jobs", 
                label: "JES Jobs", 
                nodeType: "ROOT", 
                childNodesURI: "jobs?owner=*", 
                childIds: [],
                isFetchingChildren: false, 
                isToggled: true, 
                jobName: "" };
                console.log(node.get("id"));

当调用 node.get("id") 时,我得到“TypeError: node.get is not a function”

我假设这是因为没有函数 .get() foo 一个 JSON 对象,但不确定...如果是这种情况,如何将 JSON 转换或初始化为映射?

最佳答案

您向我们展示的是一个 javascript 对象。如果您需要在这种情况下调用“键”,您应该使用 theObject.theProperty 如下所示

var node = {
  id: "jobs",
  label: "JES Jobs",
  nodeType: "ROOT",
  childNodesURI: "jobs?owner=*",
  childIds: [],
  isFetchingChildren: false,
  isToggled: true,
  jobName: ""
};

//Call the object property ID
console.log(node.id);

如果您需要 map ,您需要这样:

var myMap = new Map();

// setting the values
myMap.set("id", "jobs");

console.log(myMap.get("id"));

如果你想从你的对象开始创建 map ,你可以这样做

var node = {
  id: "jobs",
  label: "JES Jobs",
  nodeType: "ROOT",
  childNodesURI: "jobs?owner=*",
  childIds: [],
  isFetchingChildren: false,
  isToggled: true,
  jobName: ""
};

function buildMap(obj) {
    let map = new Map();
    Object.keys(obj).forEach(key => {
        map.set(key, obj[key]);
    });
    return map;
}

const map = buildMap(node);

console.log(map.get("id"));

关于javascript - 为什么我无法对 json 数据调用 .get/如何将 json 转换为 map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41124404/

相关文章:

php - 即使随机值添加到 php 请求,IE 也会缓存 JSON 结果

java - Log4j 2 JSON 配置

c#序列化和json

javascript - 将数组形式的字符串转换为实际数组

c++ - 在 C++ 中创建一个 json 数组

javascript - Chrome WebAPIchrome.webRequest.onBeforeSendHeaders 不更改传出请求中的参数

javascript - 获取用户选择的起点和终点

javascript - 无法使用 addeventlistener 正确触发 JS

Javascript重新声明的全局变量覆盖旧值

Javascript 并不是 Checkbox 的真实结果