如何将SimpleOrderedMap转换为JSON字符串或JSON对象?
有没有标准的方法可以做到这一点?
Is there any standard way to do so?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
有没有标准的方法可以做到这一点?
Is there any standard way to do so?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(3)
简而言之:不,因为 JSON 没有原始的有序映射类型。
第一步是确定客户端的要求,就解码 JSON 字符串而言。由于 JSON 规范没有有序映射类型,因此您必须决定要使用的表示形式。您所做的选择将取决于客户的解码要求。
如果您可以完全控制 JSON 字符串的解码,则可以使用 JSON 库按顺序将对象编码到映射中,该库保证按照您传入的迭代器的顺序序列化事物。
如果可以的话不能保证这一点,您应该自己提出一个表示。两个简单的例子是:
交替列表:
键/值条目对象的列表:
一旦您想出了这种表示形式,就可以轻松编写一个在 SimpleOrderedMap 上循环的简单函数。例如 :
In short: no, because JSON doesn't have a primitive ordered map type.
The first step is to determine the requirements of your client, as far as decoding the JSON string goes. Since the JSON specification doesn't have an ordered map type, you'll have to decide on a representation to use. The choice you make will depend on the decoding requirements of your client.
If you have full control over the decoding of the JSON string, you can simply encode the object into a map in order, using a JSON library that is guaranteed to serialize things in the order of an iterator that you pass in.
If you can't guarantee this, you should come up with a representation on your own. Two simple examples are:
An alternating list:
A list of key/value entry objects:
Once you've come up with this representation, it's easy to write a simple function that loops over your SimpleOrderedMap. For example :
Java版本:
Java version:
简单地向映射添加字段是行不通的,因为可能存在复杂的对象(不会序列化为 JSON)。
这是执行此操作的常规代码。
Simple adding fields to map won't work, as complex objects (which does not serialize to JSON) could be there.
Here's a groovy code that does it.