React Native中JSON.parse后对象键仍为字符串的格式转换问题
解决JS对象坐标键转换及控制台显示问题
核心问题说明
- 你误用了
JSON.parse:它的参数必须是JSON格式的字符串,直接传入对象会被隐式转为"[object Object]",这属于非法JSON格式,你的代码实际会触发错误(若你是先JSON.stringify再parse,这种操作也完全没必要)。 - 控制台显示的带引号键,只是控制台将对象转为JSON字符串后的显示形式,实际你的对象键已经是不带引号的标识符格式——JS中对象的标识符键(如
lat)本身就不需要引号,控制台的显示不代表实际对象结构。
正确转换代码
无需任何JSON相关操作,直接遍历数组映射字段即可:
const route = [{"latitude": 51.6788, "longitude": -0.1689}, {"latitude": 51.8753, "longitude": -0.1693}]; const formattedRoute = route.map(item => ({ lat: item.latitude, lng: item.longitude })); console.log(formattedRoute);
控制台显示差异原因
不同环境的控制台输出逻辑不同:
- MDN fiddle控制台直接显示JS对象的字面量格式,因此键不带引号;
- React Native/VSCode调试控制台会将对象序列化为JSON字符串后显示,所以键带引号,但这只是显示方式,实际对象结构完全符合API要求,可直接传入使用。
验证实际结构的方法
你可以通过以下代码确认对象键的实际格式:
console.log(Object.keys(formattedRoute[0])); // 输出 ["lat", "lng"],说明键本身是不带引号的字符串标识符
内容的提问来源于stack exchange,提问作者Maple845
相关产品推荐
相关产品推荐

