JAVA中是否有类似于JSON的数据结构?
Is there a data-structure similar to JSON in JAVA?
我需要将键值对存储在键值对内部等等,根据数据的要求。
我试图在 java 中使用 Hash-Map 来实现这一点,但它没有像我预期的那样工作。因为,我的数据有多个 name->value 对,但是 Hash-Map 不断用新的 name 键的值覆盖。
例如,我需要为在线商店存储产品列表及其详细信息。哪种数据结构可以帮助我实现这一点以及如何实现?
TIA。
如果你想要一个 'generic' 集合,为什么不使用 Guava MultiMap?
A collection that maps keys to values, similar to Map, but in which
each key may be associated with multiple values. You can visualize the
contents of a multimap either as a map from keys to nonempty
collections of values ... or as a single "flattened" collection of key-value pairs
但是,听起来您可能真的想将您的实体建模为具有适当属性等的适当对象。存储集合的集合的集合是可行的,但您将失去使用 behaviour/polymorphism 等定义对象的一些好处
例如
List<Product> products = ...
products.add(new Book(...));
products.add(new Dvd(...));
(或者可能是库存项目 ID 到对象实例的映射,或者,或者,或者...)
我会将 JSON 视为您对象的代表(例如 XML)。如果您需要传输或存储这些对象,请将它们转换为 JSON 或 XML 等格式。但是在您的程序中使用具有类型和行为的对象来管理它们。
您需要一个 MultiMap,Java 默认情况下不存在,但您可以在 Guava 或 Apache Commons 等库中找到它。
如@maskacovnik 所写-使用您自己的 class :)
顺便说一句,您还可以在 java - API docs there
中使用 JSON
If you need some container you can use also a hashMap - with all values saved as string eg.
(for multi-valued keys you can use value in format eg. csv ..)
Hashmap数据结构示例:
name - name
surname - surname
functions - func1;funct2,etc..
虽然您需要读取键的值,但您可以通过string.split(regex)
将它们解析为数组
我需要将键值对存储在键值对内部等等,根据数据的要求。
我试图在 java 中使用 Hash-Map 来实现这一点,但它没有像我预期的那样工作。因为,我的数据有多个 name->value 对,但是 Hash-Map 不断用新的 name 键的值覆盖。
例如,我需要为在线商店存储产品列表及其详细信息。哪种数据结构可以帮助我实现这一点以及如何实现?
TIA。
如果你想要一个 'generic' 集合,为什么不使用 Guava MultiMap?
A collection that maps keys to values, similar to Map, but in which each key may be associated with multiple values. You can visualize the contents of a multimap either as a map from keys to nonempty collections of values ... or as a single "flattened" collection of key-value pairs
但是,听起来您可能真的想将您的实体建模为具有适当属性等的适当对象。存储集合的集合的集合是可行的,但您将失去使用 behaviour/polymorphism 等定义对象的一些好处
例如
List<Product> products = ...
products.add(new Book(...));
products.add(new Dvd(...));
(或者可能是库存项目 ID 到对象实例的映射,或者,或者,或者...)
我会将 JSON 视为您对象的代表(例如 XML)。如果您需要传输或存储这些对象,请将它们转换为 JSON 或 XML 等格式。但是在您的程序中使用具有类型和行为的对象来管理它们。
您需要一个 MultiMap,Java 默认情况下不存在,但您可以在 Guava 或 Apache Commons 等库中找到它。
如@maskacovnik 所写-使用您自己的 class :)
顺便说一句,您还可以在 java - API docs there
中使用 JSONIf you need some container you can use also a hashMap - with all values saved as string eg. (for multi-valued keys you can use value in format eg. csv ..)
Hashmap数据结构示例:
name - name
surname - surname
functions - func1;funct2,etc..
虽然您需要读取键的值,但您可以通过string.split(regex)