我知道标题很简单,但它不是关于在SQL Server中存储JSON数据。
我有一个带有JSONObjects的JSONArray
,其中的键与SQL Server 2012中的列名匹配。我想将数据保存到数据库中的正确列。
我知道显而易见的方法是迭代JSONArray
并使用单独的insert命令保存值。我想知道是否有另一种方法可以做到这一点。
我不想使用T-SQL。我只想从Java处理这个问题。
以下是与我的JSONArray
格式匹配的示例数据:
[
{
"FEATURE":"A",
"OPTION":"92384",
"ERROR_TYPE":"MISSING",
"DESCRIPTION":"Feature A is missing the option 92384",
"SERIAL_NUMBER":"249752-23894"
},
{
"FEATURE":"B",
"OPTION":"0288394",
"ERROR_TYPE":"MISSING",
"DESCRIPTION":"Feature B is missing the option 0288394",
"SERIAL_NUMBER":"Y2394-20392Q"
}
]
我的SQLServer表如下所示:
如果没有循环遍历每个JSONArray
,最好的方法是什么?
答案 0 :(得分:1)
当你添加了java标签时,我会将JSON转换为Java对象并使用Hibernate进行保存。这是两个有用的链接如何做到这一点 Json to Java Hibernate example
答案 1 :(得分:-1)
DECLARE @testJson NVARCHAR(4000)= N'[{"id":2,"name":"n2"},{"id":1,"name":"n1"}]'
INSERT
INTO
test_table SELECT
*
FROM
OPENJSON(@testJson) WITH (
id int N'$.id',
name VARCHAR(200) N'$.name'
)
<强>更新强>
使用java
jsonStr - &gt; jsonObject和getKeys(一些json libs)
String youJson = "{\"id\":0, \"name\":\"n0\"}";
JsonParser parser = new JsonParser();
JsonObject jsonObject = parser.parse(json).getAsJsonObject();
Set<String> keys = jsonObject.keySet();
然后使用NamedParameterJdbcTemplate和MapSqlParameterSource(spring-jdbc)创建sql并动态设置参数。
PS。我讨厌java中的ORM。