将JSONObject映射到SQL Server

时间:2017-08-24 07:44:06

标签: java json sql-server-2012-express

我知道标题很简单,但它不是关于在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表如下所示: SQL table

如果没有循环遍历每个JSONArray,最好的方法是什么?

2 个答案:

答案 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。