提问者:小点点

需要在对象中找到键,并在JavaScript对象中在键之前追加一些内容


问题是我收到了一些JSON对象,因为我们正在替换所有的$,现在当尝试用相同的对象在mongo DB中相同时得到了错误,因为版本在JSON中是重复的,所以得到了冲突错误。 现在我将尝试修复这个问题,当我们在键的最后一个字符串中获得版本时,它将'.version'替换为'._version'。 需要在ES6中找到最好的方式。 我会尽量避免传统的方法,比如看键等。

// below string was convert with JSON.stringify() output.
const twin = "{"twin.version":532,"twin.properties.reported.schemaVersion":"1.0","twin.properties.reported.lastDesiredVersion":4,"twin.properties.reported.lastDesiredStatus.code":200,"twin.properties.reported.lastDesiredStatus.description":"","twin.properties.reported.clients":{},"twin.properties.reported.version.version":"1.0.8.5","twin.properties.reported.version.build":"28262167","twin.properties.reported.version.commit":"b5de730c6020b852f9636b7117138de6c6fced36","twin.properties.reported.$metadata.$lastUpdated":"2020-07-30T13:27:34.6947178Z","twin.properties.reported.$metadata.schemaVersion.$lastUpdated":"2020-07-30T13:27:34.6947178Z","twin.properties.reported.$metadata.lastDesiredVersion.$lastUpdated":"2020-07-30T13:27:34.6947178Z","twin.properties.reported.$metadata.lastDesiredStatus.$lastUpdated":"2020-07-30T13:27:34.6947178Z","twin.properties.reported.$metadata.lastDesiredStatus.code.$lastUpdated":"2020-07-30T13:27:34.6947178Z","twin.properties.reported.$metadata.lastDesiredStatus.description.$lastUpdated":"2020-07-30T13:27:34.6947178Z","twin.properties.reported.$metadata.clients.$lastUpdated":"2020-07-30T13:27:34.6947178Z","twin.properties.reported.$metadata.version.$lastUpdated":"2020-07-30T13:27:34.6947178Z","twin.properties.reported.$metadata.version.version.$lastUpdated":"2020-07-30T13:27:34.6947178Z","twin.properties.reported.$metadata.version.build.$lastUpdated":"2020-07-30T13:27:34.6947178Z","twin.properties.reported.$metadata.version.commit.$lastUpdated":"2020-07-30T13:27:34.6947178Z","twin.properties.reported.$version":528}"

const result = JSON.parse((JSON.stringify(twin)).replace(/[$]/g, ''));
return result;

现在返回之前,结果需要替换

twin.properties.reported.versiontwin.properties.reported._version

类似的方式,如果我们找到的版本在之间,不需要做任何事情对它。

Twin.Properties.Reported.$Metadata.Version.$LastUpdatedTwin.Properties.Reported.Metadata.Version.LastUpdated


共1个答案

匿名用户

不能用双引号将字符串换行。

这个管用

null

// below string was convert with JSON.stringify() output.
const twin = `{"twin.version":532,"twin.properties.reported.schemaVersion":"1.0","twin.properties.reported.lastDesiredVersion":4,"twin.properties.reported.lastDesiredStatus.code":200,"twin.properties.reported.lastDesiredStatus.description":"","twin.properties.reported.clients":{},"twin.properties.reported.version.version":"1.0.8.5","twin.properties.reported.version.build":"28262167","twin.properties.reported.version.commit":"b5de730c6020b852f9636b7117138de6c6fced36","twin.properties.reported.$metadata.$lastUpdated":"2020-07-30T13:27:34.6947178Z","twin.properties.reported.$metadata.schemaVersion.$lastUpdated":"2020-07-30T13:27:34.6947178Z","twin.properties.reported.$metadata.lastDesiredVersion.$lastUpdated":"2020-07-30T13:27:34.6947178Z","twin.properties.reported.$metadata.lastDesiredStatus.$lastUpdated":"2020-07-30T13:27:34.6947178Z","twin.properties.reported.$metadata.lastDesiredStatus.code.$lastUpdated":"2020-07-30T13:27:34.6947178Z","twin.properties.reported.$metadata.lastDesiredStatus.description.$lastUpdated":"2020-07-30T13:27:34.6947178Z","twin.properties.reported.$metadata.clients.$lastUpdated":"2020-07-30T13:27:34.6947178Z","twin.properties.reported.$metadata.version.$lastUpdated":"2020-07-30T13:27:34.6947178Z","twin.properties.reported.$metadata.version.version.$lastUpdated":"2020-07-30T13:27:34.6947178Z","twin.properties.reported.$metadata.version.build.$lastUpdated":"2020-07-30T13:27:34.6947178Z","twin.properties.reported.$metadata.version.commit.$lastUpdated":"2020-07-30T13:27:34.6947178Z","twin.properties.reported.$version":528}`

const result = JSON.parse(twin.replace(/[$]/g, ''));
console.log(result)