使用borsh js反序列化数组



我正在使用borsh来序列化和反序列化。

class something {
val_1 = 0
val_2 = 0
constructor(fields: {val_1: number, val_2: number} | undefined=undefined) {
if(fields) {
this.val_1 = fields.val_1
this.val_2 = fields.val_2
}
}
}
const somethingSchema = new Map([
[something, {kind: 'struct', fields: [
['val_1', 'u128'], ['val_2', 'u128']
]}]
])
const decoded_data = borsh.deserialize(something, somethingSchema, data);

这对于单个结构体很有效。但是我不确定如何对struct数组进行反序列化。

有什么建议就太好了。

感谢

不能通过使用borsh-js直接回答这个问题,但是我是另一个库borsh-ts的作者,可以使这些规范更容易。

import {
deserialize,
serialize,
field,
vec,
} from "@dao-xyz/borsh";
class SomeClass 
{
@field({type: 'u128'})
a: number
@field({type: 'u128'})
b: number

constructor(data?:SomeClass)
{
if(data)
{
Object.assign(this,data)
}
}
}
class OtherClass {
@field({type: vec(SomeClass)})
q: SomeClass[]

constructor(data?:OtherClass)
{
if(data)
{
Object.assign(this,data)
}
}
}
...
const value = new OtherClass( ... initialize ... );
// Serialize 
const serialized = serialize(value); 
// Deserialize
const deserialized = deserialize(Buffer.from(serialized),OtherClass);