如何将特殊的JSON格式解析为JavaScript对象?

如何将特殊的JSON格式解析为JavaScript对象?,javascript,json,mongodb,object,parsing,Javascript,Json,Mongodb,Object,Parsing,我一直在寻找这种特定格式的答案,但未能找到任何解决此特定问题的方法 情况是,我有一种JSON格式,不能与mongoDB结合使用。我希望将JSON数据的格式更改为普通JavaScript对象。现在数据长度超过2000个条目,所以我无法手动处理。我无法使JSON.parse(数据)适用于这种特殊格式 以下是当前JSON格式的示例: { "一": { "strokes": 1, "grade": 1,

我一直在寻找这种特定格式的答案,但未能找到任何解决此特定问题的方法

情况是,我有一种JSON格式,不能与mongoDB结合使用。我希望将JSON数据的格式更改为普通JavaScript对象。现在数据长度超过2000个条目,所以我无法手动处理。我无法使JSON.parse(数据)适用于这种特殊格式

以下是当前JSON格式的示例:

{
    "一": {
        "strokes": 1,
        "grade": 1,
        "freq": 2,
        "jlpt_old": 4,
        "jlpt_new": 5,
        "meanings": ["One","One Radical (no.1)"],
        "readings_on": ["いち","いつ"],
        "readings_kun": ["ひと-","ひと.つ"],
        "wk_level": 1,
        "wk_meanings": ["One"],
        "wk_readings_on": ["いち","いつ"],
        "wk_readings_kun": ["!ひと"],
        "wk_radicals": ["Ground"]
    },
    "二": {
        "strokes": 2,
        "grade": 1,
        "freq": 9,
        "jlpt_old": 4,
        "jlpt_new": 5,
        "meanings": ["Two","Two Radical (no. 7)"],
        "readings_on": ["に","じ"],
        "readings_kun": ["ふた","ふた.つ","ふたたび"],
        "wk_level": 1,
        "wk_meanings": ["Two"],
        "wk_readings_on": ["に"],
        "wk_readings_kun": ["!ふた"],
        "wk_radicals": ["Two"]
    },
}
我最终希望达到的形式如下:

[
    {
        kanji: "一",
        strokes: 1,
        grade: 1,
        freq: 2,
        jlpt_old: 4,
        jlpt_new: 5,
        meanings: ["One","One Radical (no.1)"],
        readings_on: ["いち","いつ"],
        readings_kun: ["ひと-","ひと.つ"],
        wk_level: 1,
        wk_meanings: ["One"],
        wk_readings_on: ["いち","いつ"],
        wk_readings_kun: ["!ひと"],
        wk_radicals: ["Ground"]
    },
    {
        kanji: "二",
        strokes: 2,
        grade: 1,
        freq: 9,
        jlpt_old: 4,
        jlpt_new: 5,
        meanings: ["Two","Two Radical (no. 7)"],
        readings_on: ["に","じ"],
        readings_kun: ["ふた","ふた.つ","ふたたび"],
        wk_level: 1,
        wk_meanings: ["Two"],
        wk_readings_on: ["に"],
        wk_readings_kun: ["!ふた"],
        wk_radicals: ["Two"]
    }
]
如您所见,初始格式有一个描述每个对象的键,但所期望的格式有对象内部的所有信息


如果有人能帮我解决这个问题,那就太棒了!:)

这两个对象实际上都是有效的JSON对象,尽管您正在寻找一个简单的操作:

const数据={
"一": {
"笔触":一,,
“等级”:1,
“频率”:2,
“jlpt_old”:4,
“jlpt_新”:5,
“含义”:[“一”、“一个部首(第1号)”,
“读物”:[“いち","いつ"],
“读物”——“…”ひと-","ひと.つ"],
“工作水平”:1,
“wk_含义”:[“一”],
“工作读物”:[“いち","いつ"],
“wk___kun”:[“!ひと"],
“wk_部首”:[“地面”]
},
"二": {
"笔触":2,,
“等级”:1,
“频率”:9,
“jlpt_old”:4,
“jlpt_新”:5,
“含义”:[“两个”,“两个部首(第7号)”,
“读物”:[“に","じ"],
“读物”——“…”ふた","ふた.つ","ふたたび"],
“工作水平”:1,
“wk_含义”:[“两个”],
“工作读物”:[“に"],
“wk___kun”:[“!ふた"],
“wk_部首”:[“两个”]
}
};
const parsed=Object.entries(data).reduce((acc[kanji,obj])=>acc.concat({kanji,…obj}),[]);
console.log(已解析)
这对您有好处吗

let json={
"一": {
"笔触":一,,
“等级”:1,
“频率”:2,
“jlpt_old”:4,
“jlpt_新”:5,
“含义”:[“一”、“一个部首(第1号)”,
“读物”:[“いち","いつ"],
“读物”——“…”ひと-","ひと.つ"],
“工作水平”:1,
“wk_含义”:[“一”],
“工作读物”:[“いち","いつ"],
“wk___kun”:[“!ひと"],
“wk_部首”:[“地面”]
},
"二": {
"笔触":2,,
“等级”:1,
“频率”:9,
“jlpt_old”:4,
“jlpt_新”:5,
“含义”:[“两个”,“两个部首(第7号)”,
“读物”:[“に","じ"],
“读物”——“…”ふた","ふた.つ","ふたたび"],
“工作水平”:1,
“wk_含义”:[“两个”],
“工作读物”:[“に"],
“wk___kun”:[“!ふた"],
“wk_部首”:[“两个”]
},
}
让响应=[];
for(让我们输入json){
push({kanji:key,…json[key]});
}
console.log(response);
对解析后的JSON的
对象进行一次
map()
调用

constjson='{”一“:{“笔画”:1,“等级”:1,“频率”:2,“旧的”:4,“新的”:5,“意义”:[“一”,“一个部首(第1号)”],“阅读”:[”いち","いつ“],“读物”:[”ひと-","ひと.つ“],“wk_水平”:1,“wk_含义”:[“一”],“wk_读物”:[”いち","いつ“],“wk__kun”:[“!ひと“],“wk_部首”:[“Ground”]},”二“:{“笔画”:2,“等级”:1,“频率”:9,“旧的”:4,“新的”:5,“含义:[“两个”,“两个部首(第7号)”,“读物”:[”に","じ“],“读物”:[”ふた","ふた.つ","ふたたび“],“wk_水平”:1,“wk_含义”:[“两”],“wk_阅读”:[”に“],“wk__kun”:[“!ふた“],“wk_部首”:[“两个”]}};
const obj=JSON.parse(JSON);
const refactured=Object.entries(obj.map)([k,v])=>({kanji:k,…v}));

console.log(重构)
非常感谢MorKadosh!这真的帮了大忙了!:)谢谢你运行了Marciano,这个解决方案很容易理解。这是一个很大的帮助!:)谢谢你pilchard提供了这个紧凑的解决方案!非常高兴知道这一点!:)不用担心。因为你返回的数组的长度与源数组的长度相同,所以最好使用
map()
大于
reduce()