我正在使用Node并且有一个对象流。每个对象都包含可以引用其他对象的字符串;本质上,对象在流中是自引用的。我想将这些引用替换为与它们引用的对象关联的值。但是,如果不先缓冲整个流,然后循环回去进行替换,这似乎是不可能的。
是否有任何技术可以在流中进行自引用变量替换?我正在考虑侧链流或缓冲区的可能性,但由于无法回到较旧的块,替换它们似乎是不可能的。
数据示例如下所示,但是,每个对象不是数组,而是块是一个对象。
translations = [
key: 'client'
parents: ['ui']
values:
en: 'THE COMPANY'
fr: 'LE COMPANIE'
,
key: 'title'
parents: ['ui']
values:
en: 'hello ${ui.client} world2'
fr: 'bonjour monde2'
]
引用由父项 + 键完成,因此${ui.client}
引用。每个对象都有一个键,而只有一些对象可能有引用。
序列化流中其他对象的引用的常用方法是为流中的每个对象创建 ID,并将引用替换为 ID 值,并将 ID 添加到流中的每个对象。 然后,解释序列化数据的代码必须知道哪些字段包含引用 ID,然后可以将这些字段替换为对新创建对象的引用。 流中的转发引用需要更多工作,因为您必须保留等待查找引用引用的主机对象的挂起引用 ID 的列表,但这一切都可以完成。
每当我遇到这样的问题时,我通常会寻找一种更简单的方法来存储数据,它不一定是活动对象的直接表示形式,然后编写一些代码,仅从存储的数据重建活动对象,而不是直接序列化,但有时处理起来要简单得多。 这是否适合您完全取决于您的具体情况和数据。