Solidity:存储 JSON 数据。使用结构类型与字符串相比有何优势?

Ste*_*eve 6 ethereum solidity

我必须将 JSON 格式的数据存储在我的 Solidity 合约中。我不需要对数据进行任何操作。我只需要存储它、更新它并返回它。

假设我有 JSON 格式的数据,例如:

{'name': 'Nike', 'size':'12', 'color':'blue'}
Run Code Online (Sandbox Code Playgroud)

我目前正在将数据作为字符串传递给构造函数:

constructor(string _data) public {
  data = _data;
}
Run Code Online (Sandbox Code Playgroud)

并通过简单地替换整个字符串来更新数据:

function updateData(string _data) public {
  data = _data;
}
Run Code Online (Sandbox Code Playgroud)

我正在争论是否应该创建一个结构类型,命名为“Shoe”,并将每个属性作为参数传递:

constructor(string _name, uint size, string _color) public {
  Shoe memory newShoe = Shoe({
    name: _name,
    size: _size,
    color: _color
  })

  data = newShoe;
}
Run Code Online (Sandbox Code Playgroud)

我永远不需要存储多个鞋对象,并且将数据作为String传递似乎更简单、更容易,但我想知道使用Struct类型是否有优势。

nik*_*dis 7

以字符串形式传递数据似乎更合适,因为您不需要在合约上操作它们。它将变得更容易并且更不容易出现错误和错误。就天然气而言,它也会更便宜,也就是说,如果您无论如何都担心天然气的话。