2017-03-16 510 views
-1

我目前遇到了要求将数据动态导入MySQL数据库(但使用java)。使用java从JSON文件导入数据到MySQL数据库

我不确定最佳做法是什么,但让我提出我的方案。

JSON的可以是动态的和不确定的每一个我从API端点 例如读取时间将在JSON什么:

"table1" : { 
    "field1" : "value1", 
    "field2" : "value2", 
    "field3" : "value3" 
} 

一次的JSON会是这样

其他时间它可能会像

"table2" : { 
    "field1" : "value1", 
    "field2" : "value2", 
    "field3" : "value3", 
    "field4" : "value4" 
} 

所以我的问题是,我应该解析JSON,并将其与表中的字段将JSON比较匹配名称?

或者是否有任何Java库可用,这将使我能够轻松高效地处理这个问题。

注:我要准备这个作为一定的时间间隔和JSON需要得到进口到它所属的表中的相应后会持续扫描一个给定的API服务,如果表不存在,那么必须自动创建。

感谢您的耐心阅读和支持,这是一种新的需求,我从来没有处理过。

先谢谢您!

+1

不会显示为IMO的良好做法。确保json提供正确的表名。然后收集表元数据以获取密钥并根据可用值生成插入列表(如果每个表都有自己的验证器,则选择正确的验证器也更容易)。如果它无效,那就太糟糕了。相应报告。 – KarelG

+0

是@KarelG这不是一个好的处理方案,但数据来自遗留应用程序,我没有权限更改json API。 Validator似乎是一个很好的解决方案,但是表名和模式是不确定的,这意味着json文件中可能会有新表,并且如果它不存在,我们必须生成表,有没有其他的最佳实践呢?非常感谢!! –

回答

1

您可以使用google-gson或杰克逊API来让你的代码更有效

+0

是的,我使用杰克逊,谢谢,但我在寻找一个库,这将节省时间,而不是自己编码,如果有的话,请告知我,谢谢 –

1

在我的项目,我用谷歌,GSON API。它工作得很好,而且很无痛。 您可以找到该项目的描述here

下面是从API一个简单的例子docs至极支持多维阵列,任意复杂的元素类型:

类别实例

Gson gson = new Gson(); 
Collection<Integer> ints = Lists.immutableList(1,2,3,4,5); 

// Serialization 
String json = gson.toJson(ints); // ==> json is [1,2,3,4,5] 

// Deserialization 
Type collectionType = new TypeToken<Collection<Integer>>(){}.getType(); 
Collection<Integer> ints2 = gson.fromJson(json, collectionType); 
// ==> ints2 is same as ints 

希望这有助于。

+0

谢谢!但这不是要求,我需要通过使用java将json中的数据导入到mysql中 –

相关问题