【问题标题】:Replace all keys in a JSON object one by one with my own data用我自己的数据一一替换JSON对象中的所有键
【发布时间】:2017-07-31 07:01:25
【问题描述】:

我有一个包含以下内容的 JSON 对象:

[{
    "type": "pdf",
    "size": "1mb",
    "date": "392017",
    .....500 more key value pairs like this
}]

这就是我在 React Native 的屏幕上显示我上面的 JSON 对象的方式。

export const MyComponent = ({myJson}) => {
    const data = Object.entries(myJson).map(([key, value], i) => {
        if (value !== '' && value !== null) {
            return (
                <View style={styles.body} key={i}>
                    <Text style={styles.labels}>{key}</Text>
                    <Text style={styles.values}>{value}</Text>
                </View>
            );
        }
    });

    return (
        <View>
            {data}
        </View>
    );
};

我想更改键,使其变为:

[{
    "File Type": "pdf",
    "File Size": "1mb",
    "Date Is": "392017",
    .....500 more key value pairs like this
}]

我将如何在 React 中做到这一点?

谢谢!

【问题讨论】:

  • 您可能会提供旧名称到新名称的映射,然后只需将旧属性分配给具有新名称的新属性,无论是在新对象中还是在旧对象中,然后删除旧属性.你试过什么?

标签: javascript json loops reactjs react-native


【解决方案1】:

创建 oldName:newName 的名称映射并使用它映射到具有新属性名称的对象,例如

var data = [{
    "type": "pdf",
    "size": "1mb",
    "date": "392017"
}];

var nameMap = {type:'File Type',
               size:'File Size',
               date:'Date Is'
};

var renamed = [Object.keys(data[0]).reduce(
  (acc, key) => {
    acc[nameMap[key]] = data[0][key];
    return acc;
  }, {})];
  
console.log(renamed);

【讨论】:

    【解决方案2】:

    假设 var 数组是您的 JSON 数组,newArray 是您想要获取的数组,这里的代码可以帮助您。

    var array = [{
        "type": "pdf",
        "size": "1mb",
        "date": "392017",
        .....500 more key value pairs like this
    }]
    
    var newArray = [];
    
    newArray = array.map(function(item){
        return {
            "File Type": item.type,
            "File Size": item.size,
            "Date is": item.date
        }
    })
    

    map 方法将转换数组中的每一项,并将结果转换为另一个数组。

    【讨论】:

    • 这应该是一个手动的过程,javascript怎么知道什么应该是关键?
    • 假设两个数组(即新旧键)之间存在一对一映射,那么就没有必要了……无论映射是在object 还是array 中都可以正常工作。
    【解决方案3】:
    Object.keys(yourObject).forEach((key)=>{ //this will return array of keys
    
       yourObject[newKey] = yourObject[key]; //saving reference in your new key.
       delete yourObject[key]; //deleting old key;
    
    });
    

    您需要将旧键映射到新键,然后循环使用并轻松更改。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-31
      • 2016-11-15
      • 2018-01-09
      • 1970-01-01
      • 2016-12-30
      相关资源
      最近更新 更多