Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/466.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,我是javascript新手,我需要更改我正在接受的json格式。 我有这种格式的json { "id": "3", "start": "2019-04-15T09:00:00", "end": "2019-04-15T11:00:00", "users":[{"id":2,"firstName":"John"}] } 我需要json是这样的 { "start": "2019-04-15T09:00:00", "end": "2019-04-15

我是javascript新手,我需要更改我正在接受的json格式。 我有这种格式的json

{
    "id": "3",
    "start": "2019-04-15T09:00:00",
    "end": "2019-04-15T11:00:00",
    "users":[{"id":2,"firstName":"John"}]
}
我需要json是这样的

{
    "start": "2019-04-15T09:00:00",
    "end": "2019-04-15T11:00:00",
    "text": "John"
}
其中,用户名设置为text。我不太熟悉javascript,所以我不知道如何迭代这个json并重新格式化它

编辑:我正在从文件中获取json 这是我的密码

let ob1 = fetch('db.json')
        let mapped = {
            "start": ob1.start,
            "end": ob1.end,
            "text": ob1.usersShifts.map(curElem => {return curElem.firstName}) + ""
        }
        console.log(mapped) 
我的问题现在开始结束和文本都未定义

这将起作用

constolddata={
“id”:“3”,
“开始”:“2019-04-15T09:00:00”,
“结束”:“2019-04-15T11:00:00”,
“用户”:[{“id”:2,“firstName”:“John”}]
}
常数newData={
开始:oldData.start,
结束:oldData.end,
文本:oldData.users[0]。firstName
}

console.log(newData)您只需将其映射到另一个元素,然后

对于
用户
我认为是这样的

ob1.users.map(curElem => {return curElem.firstName}) + ""
如果大于1,则需要将数组转换为字符串
让ob1={
“id”:“3”,
“开始”:“2019-04-15T09:00:00”,
“结束”:“2019-04-15T11:00:00”,
“用户”:[{“id”:2,“firstName”:“John”}]
}
设映射={
“开始”:ob1.start,
“结束”:ob1.end,
“text”:ob1.users.map(curElem=>{return curElem.firstName})+”
}
console.log(映射)
//如果您有多个用户,并且希望得到基于用户的结果,请单击此处
让结果=[]
ob1.users.forEach(currUser=>{
结果.推送({
“开始”:ob1.start,
“结束”:ob1.end,
“text”:currUser.firstName
})
})

console.log(result)
这假设用户列表中只有一个用户,因为它将选择第一个用户

让json_数据=[
{
“id”:“3”,
“开始”:“2019-04-15T09:00:00”,
“结束”:“2019-04-15T11:00:00”,
“用户”:[{“id”:2,“firstName”:“John”}]
},
];
让输出=[];
json_data.forEach(函数(项){
output.push({“start”:item.start,“end”:item.end,“text”:item.users[0].firstName});
});

控制台日志(输出)我假设输入数据是一个JSON字符串

您需要将JSON字符串解析为javascript对象,然后修改它并将其解析回JSON字符串:

var json='{“id”:“3”,“start”:“2019-04-15T09:00:00”,“end”:“2019-04-15T11:00:00”,“users”:[{“id”:2,“firstName”:“John”}]}';
var inputData=JSON.parse(JSON);
变量输出数据={
开始:inputData.start,
结束:inputData.end,
文本:inputData.users[0]。firstName
};
var output=JSON.stringify(outputData);
控制台日志(输出)检查一下这个


函数格式(){
var oldData={
“id”:“3”,
“开始”:“2019-04-15T09:00:00”,
“结束”:“2019-04-15T11:00:00”,
“用户”:[{“id”:2,“firstName”:“John”},{“id”:3,“firstName”:“Peter”}]
}
var newData=[];
var i=oldData.users.length;
var k=0;
而(k
您能提供一个小的列表来确定您在这里有什么吗?这已经是一个对象还是纯文本中的JSON?JSON是用于数据交换的文本表示法。如果您处理的是JavaScript源代码,而不是字符串,那么您就没有处理JSON。“users”属性是一个数组,因此可能有多个用户对象,每个对象都有自己的“firstName”。您如何决定将哪些内容放入“文本”中?共享一些代码或查看此链接。如果要提取json并创建新的json。我获取json的方式如下:```var json=fetch('db.json')```这是简单而整洁的。当我自己输入json时,这可以工作,但我使用fetch命令inputData从文件中获取json。用户[0]。firstName不工作,错误状态为“无法读取未定义的属性0”。这可能是因为我有几个用户,当“users”为null或未定义时会发生这种情况。您需要描述“用户”属性确切包含的内容,以及您希望在“文本”属性中显示的内容。我如何定义长度?您指的是哪种长度?