繁体   English   中英

用Javascript格式化JSON

[英]Formatting json in Javascript

我是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"
}

用户的名字设置为文本的位置。 我对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) 

我现在的问题是开始结尾和文本都不确定

这会起作用

 const oldData = { "id": "3", "start": "2019-04-15T09:00:00", "end": "2019-04-15T11:00:00", "users":[{"id":2,"firstName":"John"}] } const newData = { start: oldData.start, end: oldData.end, text: oldData.users[0].firstName } console.log(newData); 

看一下这个,

 <script> function format(){ var oldData = { "id": "3", "start": "2019-04-15T09:00:00", "end": "2019-04-15T11:00:00", "users":[{"id":2,"firstName":"John"},{"id":3,"firstName":"Peter"}] } var newData = []; var i = oldData.users.length; var k = 0; while(k < i){ var temp_array = { "start":oldData.start, "end":oldData.end, "text":oldData.users[k]["firstName"] } newData.push(temp_array); k++; } console.log(newData); } format(); </script> 

您只需将其映射到另一个元素,然后

对于users我认为它是数组

ob1.users.map(curElem => {return curElem.firstName}) + ""

如果大于1,则需要+ ""将数组转换为String

  let ob1 = { "id": "3", "start": "2019-04-15T09:00:00", "end": "2019-04-15T11:00:00", "users":[{"id":2,"firstName":"John"}] } let mapped = { "start": ob1.start, "end": ob1.end, "text": ob1.users.map(curElem => {return curElem.firstName}) + "" } console.log(mapped) // here if you have multiple users and you want the result based on the users let result = [] ob1.users.forEach(currUser => { result.push( { "start": ob1.start, "end": ob1.end, "text": currUser.firstName }) }) console.log(result) 

假设您将在用户列表中只有一个用户,因为它将选择第一个用户...

 let json_data = [ { "id": "3", "start": "2019-04-15T09:00:00", "end": "2019-04-15T11:00:00", "users":[{"id":2,"firstName":"John"}] }, ]; let output = []; json_data.forEach(function(item) { output.push({"start": item.start, "end": item.end, "text": item.users[0].firstName}); }); console.log(output); 

我假设输入数据是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); var outputData = { start: inputData.start, end: inputData.end, text: inputData.users[0].firstName }; var output = JSON.stringify(outputData); console.log(output); 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM