问题是我收到了一些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.version
到twin.properties.reported._version
类似的方式,如果我们找到的版本在之间,不需要做任何事情对它。
Twin.Properties.Reported.$Metadata.Version.$LastUpdated
到Twin.Properties.Reported.Metadata.Version.LastUpdated
不能用双引号将字符串换行。
这个管用
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)