在JAVA中是否存在类似于JSON的数据结构?

时间:2015-06-05 09:02:22

标签: java json data-structures associative-array

我需要将键值对存储在键值对内,依此类推。按照数据的要求。

我尝试在java中使用Hash-Map实现这一点,但它并没有像我预期的那样工作。因为,我的数据有多个name->值对,但Hash-Map会一直用新的值覆盖名称键的值。

比如说,我需要存储一个在线商店的产品列表及其详细信息。哪种数据结构可以帮助我实现这一目标以及如何实现?

TIA。

3 个答案:

答案 0 :(得分:5)

如果你想要一个'泛型'集合,为什么不使用番石榴https://www.w3.org/TR/html5/sec-forms.html#element-attrdef-form-novalidate

  

将键映射到值的集合,类似于Map,但在其中   每个键可以与多个值相关联。你可以想象出来   multimap的内容,可以是从keys到非空的映射   价值观的集合......或者作为一个单一的"扁平的"键值对的集合

然而,听起来您可能真的想要将您的实体建模为适当的对象,并使用适当的属性等。存储集合集合的集合将起作用,但是您将失去一些使用行为/多态等定义对象的好处。

e.g。

List<Product> products = ...
products.add(new Book(...));
products.add(new Dvd(...));

(或者可能是库存项目ID到对象实例的地图,或者,或者......)

我会将JSON视为对象的表示(例如XML)。如果需要传输或存储这些对象,请转换为JSON或XML等格式。但是使用具有类型和行为的对象在程序中管理它们。

答案 1 :(得分:2)

你需要一个MultiMap,默认情况下不存在于Java中,但你可以在像Guava或Apache Commons这样的库中找到它。

答案 2 :(得分:0)

正如@maskacovnik所写 - 使用你自己的类:)

顺便说一句,您也可以使用 JSON in java - API docs there

  

如果您需要某个容器,您还可以使用hashMap - 所有值都保存为 string ,例如。   (对于多值键,您可以使用格式中的值,例如.csv ..)

Hashmap数据结构示例:

name - name
surname - surname
functions - func1;funct2,etc..

虽然您需要读取键的值,但您可以通过string.split(regex)

将它们解析为数组