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)

将它们解析为数组