Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/439.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从JSON数据创建对象_Javascript_Json - Fatal编程技术网

Javascript 从JSON数据创建对象

Javascript 从JSON数据创建对象,javascript,json,Javascript,Json,我在.json文件中有以下数据: { "countries": { "sweden": { "currency": "Swedish krona", "majorLanguage": "Swedish", "landArea": { "value": 410330, "uom": "sq km"

我在.json文件中有以下数据:

{
    "countries": {
        "sweden": {
            "currency": "Swedish krona",
            "majorLanguage": "Swedish",
            "landArea": {               
                "value": 410330,
                "uom": "sq km"
                }           
            },
        "japan": {
            "currency": "yen",
            "majorLanguage": "Japanese",
            "landArea": {
                "value": 364500,
                "uom": "sq km"
                }           
            },
        "unitedStatesOfAmerica": {
            "currency": "US dollar",
            "majorLanguage": "English",
            "landArea": {
                "value": 3796742,
                "uom": "sq mi"
                }
            }
    }
}
需要想出一种方法来从中创建这个对象:

Object {
    "currency": Object {
    "japan": "yen",
    "sweden": "Swedish krona",
    "unitedStatesOfAmerica": "US dollar"
  },
  "majorLanguage": Object {
    "japan": "Japanese",
    "sweden": "Swedish",
    "unitedStatesOfAmerica": "English"
  },
  "landArea": Object {
    "japan": Object {
      "value": 364500,
      "uom": "sq km"
    },
    "sweden": Object {
      "value": 410330,
      "uom": "sq km"
    },
    "unitedStatesOfAmerica": Object {
      "value": 3796742,
      "uom": "sq mi"
    }
  }
}
将使用这些数据的应用程序是用Vue编写的,因此使用JavaScript来实现这一点是有意义的,尽管我倾向于不使用任何第三方库。具体地说,我对一种编程方法感兴趣,这种方法不需要硬编码就可以手动创建货币、主要语言和区域的对象。我真的不知道如何开始解决这个问题,所以没有任何示例尝试在这里发布。

您可以使用该方法并执行以下操作

const data={国家:{瑞典:{货币:瑞典克朗,主要语言:瑞典语,地区:{币值:410330,计量单位:平方公里},日本:{货币:日元,主要语言:日语,地区:{币值:364500,计量单位:平方公里},美国:{货币:美元,主要语言:英语,地区:{币值:3796742,计量单位:平方米}}; //迭代对象键值对 const res=Object.entriesdata.countries.reduceobj[country,valObj]=>{ //迭代国家/地区值键val对 Object.entriesvalObj.forEach[key,val]=>{ //定义键(如果未定义) obj[key]=obj[key]|{}; //在对象中定义键为country的值 obj[主要][国家]=val; } 返回obj; }, {} console.logres 这里没什么特别的:

const result = {};

for (const name in countries) {
    const country = countries[name];
    for (const key in country) {
        if (!result[key]) result[key] = {};
        result[key][name] = country[key];
    }
}

查看此链接:加载文件后,它将转换为JS对象,因此,要到达最终对象,您需要对itJSON.stringifyjson执行一些操作。您是否尝试过此操作?