Java 从字符串中提取表数据,然后插入到数据库中

Java 从字符串中提取表数据,然后插入到数据库中,java,arrays,arraylist,Java,Arrays,Arraylist,我有一个字符串,我在提交表单后从UI中获取该字符串。它从UI中的动态表中读取数据,然后在提交后创建一个如下所示的数据列表 [{“keyname0”:“url”,“keyvalue0”:“},{“keyname1”:“年份”,“keyvalue1”:“2013”},{“keyname2”:“法案”,“keyvalue2”:“参议院”},{“keyname3”:“类型”,“keyvalue3”:“html”}] 我在数据库中有两列。一个是“KEYNAME”,另一个是“KEYVALUE”。 我想将KE

我有一个字符串,我在提交表单后从UI中获取该字符串。它从UI中的动态表中读取数据,然后在提交后创建一个如下所示的数据列表

[{“keyname0”:“url”,“keyvalue0”:“},{“keyname1”:“年份”,“keyvalue1”:“2013”},{“keyname2”:“法案”,“keyvalue2”:“参议院”},{“keyname3”:“类型”,“keyvalue3”:“html”}]

我在数据库中有两列。一个是“KEYNAME”,另一个是“KEYVALUE”。 我想将KEYNAME和KEYVALUE的每个值插入数据库

有人能帮忙吗?

使用Jackson:

private static final KEYNAME = "keyname";
private static final KEYVALUE = "keyvalue";

final ObjectMapper mapper = new ObjectMapper();

final JsonNode data = mapper.readTree(theString);

String key, value;
Iterator<Map.Entry<String, JsonNode>> members;
Map.Entry<String, JsonNode> member;

for (final JsonNode element: data) {
    key = null; value = null;
    members = element.fields();
    while (members.hasNext()) {
        member = members.next();
        if (member.getKey().startsWith(KEYNAME))
            key = member.getValue().textValue();
        if (member.getKey().startsWith(KEYVALUE))
            value = member.getValue().textValue();
    }
    // check if key or value are null, if yes problem!
    // process key and value
}
private static final KEYNAME=“KEYNAME”;
私有静态最终KEYVALUE=“KEYVALUE”;
最终ObjectMapper映射器=新ObjectMapper();
最终JsonNode数据=mapper.readTree(字符串);
字符串键,值;
迭代器成员;
地图。参赛会员;
for(最终JsonNode元素:数据){
key=null;value=null;
members=element.fields();
while(members.hasNext()){
member=members.next();
if(member.getKey().startsWith(KEYNAME))
key=member.getValue().textValue();
if(member.getKey().startsWith(KEYVALUE))
value=member.getValue().textValue();
}
//检查键或值是否为空,如果是,则为问题!
//过程关键和价值
}

Ugh。“比你更灵活的设计”再次设计:/你不能将UI发送的内容更改为更健全的JSON吗?是的,我可以更改,但我不确定如何准备数据列表,以便更容易插入数据库。你能发布一些示例列表,以便我尝试制作列表吗?好的,而不是“keyname”/“keyvalue”,创建一个JSON对象,其中“keyname”的值作为键,“keyvalue”的值作为值。首先,这将更容易处理。例如,
{“url”:http://www.google.com“,“etc”:“etc”}
实际上这是一个动态表,每次我都必须按下“添加额外行”按钮,这将创建一个新行来添加一对新值。所以没有固定名称。是的,那又怎样?JSON对象成员名称可以是任何字符串。我会试试这个,让你知道。希望这能解决我的问题。再次感谢您的快速帮助。