5

我的情况如下。我有一个带有三个输出文本和相应输入文本的 JSF 表单,可以说:

输出文本1 - 输入文本1

输出文本2 - 输入文本2

输出文本3 - 输入文本3

目前我使用backbean方法“保存”,以便将它们存储到数据库中(休眠对象可以说是带有主键table1.id的table1)到字段table1.field1、table1.field2、table1.field3中。

所以表中的每条记录都有插入到输入文本中的值。

我的问题是我将如何以如下形式将表单数据存储在数据库中:

{"outputtext1:inputtext1","outputtext2:inputtext2"."outputtext3:inputtext3"}

然后再次获取它们,解析并重建表单。我正在考虑将表单数据作为 JSON 对象进行操作......但我对 Java+JSON 都是新手,所以一些指南对我来说真的很有用!

这是一个指示性示例,表单将动态生成并动态创建。

4

4 回答 4

4

为什么要序列化/反序列化 JSON 以将其直接发送到数据库?反序列化有其自身的问题,多个反序列化可能(不会成为问题的根源。

您应该将字段保存为给定实体的属性,然后在Gson等库的帮助下,从实体生成 JSON。


更新

由于您的表单是动态的,您可以使用一些适应性强的实体结构来保存您的数据。

您的实体可以有一个Map<String,String>属性或一个集合,例如,FieldRecord包含键值对的实体。

我建议这样做是因为数据库中的 JSON 可能会导致复杂的问题,特别是如果您稍后必须查询该数据。您必须处理 JSON 以便报告或查找哪些记录具有特定字段。这只是一个例子,事情可能会变得更复杂。

于 2013-04-05T14:31:32.793 回答
2

简单,您需要在表中使用 BLOB 类型列来存储 json,当您在 java 中检索它时,您只需要解码 json,我建议使用https://code.google.com/p/json-simple/它非常简单

于 2013-04-05T14:27:11.637 回答
1

转换JSONObjectString表格然后存储。当你读回来时,将其转换回JSONObject如下:

       JSONObject obj = new JSONObject(stringRepresentationOfJSON);
于 2013-04-05T14:32:20.097 回答
-2

像这样更改休眠映射 JSONObject obj = new JSONObject(stringRepresentationOfJSON);

于 2014-12-15T07:54:16.257 回答