用Javascript格式化JSON

时间:2019-04-15 11:06:09

标签: 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-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) 

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

5 个答案:

答案 0 :(得分:1)

这将起作用

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);

答案 1 :(得分:1)

检查一下

<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>

答案 2 :(得分:0)

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

对于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)

答案 3 :(得分:0)

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

UserProfile

答案 4 :(得分:0)

我假设输入数据是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);