我想解析这个json对象数据,而不是一行一行地将数据插入到数据库中:
这是我的依赖项:
"com.fasterxml.jackson.core" % "jackson-databind" % "2.8.6", // Json
"com.fasterxml.jackson.core" % "jackson-annotations" % "2.8.6",
"com.fasterxml.jackson.core" % "jackson-core" % "2.8.6"
这是我的例子:
[
{
"td1": "id",
"td2": "first_name",
"td3": "last_name"
},
{
"td1": "1",
"td2": "First Name 1",
"td3": "Last Name 1"
},
{
"td1": "2",
"td2": "First Name 2",
"td3": "Last Name 2"
}
]
提前谢谢。
答案 0 :(得分:0)
这就是我为解决问题所做的工作:
FI:我正在使用Play framework 2.5.x:
1-查看(按钮)
<button type="button" class="btn btn-primary btn-xs" onclick="JS_ADD(this,'Add ALIAS')"><i class="fa fa"></i>Save</button>
2-查看(表格)
<table class="myTable" id="myTable" cellspacing="0">
<tbody>
<tr>
<th scope="col">Code</th>
<th scope="col">Description</th>
<th scope="col">Actions</th>
</tr>
@for(al <- parameterModel.alias){
<tr>
<th scope="row" class="spec"><input type="checkbox" name="id" class="minimal" value="@al.id"></th>
<td><input type="text" name='name' value='@al.name' placeholder='Name' class="form-control"/></td>
<td></td>
</tr>
}
</tbody>
</table>
3- Javascript(在JS中我们发送表可编辑为Json到Controller)
function JS_ADD(elem,callurl)
{
if(callurl == 'Add ALIAS')
{
var parameterID = document.getElementById('parameterID').value;
var newFormData=[];
jQuery('#myTable tr:not(:first)').each(function(i){
var tb=jQuery(this);
var obj={};
tb.find('input').each(function(){
obj[this.name]=this.value;
});
// obj['row']=i;
newFormData.push(obj);
});
$.ajax
({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "/parameters/alias/"+parameterID,
data: JSON.stringify(newFormData),
success: function(data)
{
if(data.error) return;
$(document).ajaxStop(function() { location.reload(); });
}
});
}
}
4- Conf Route(路由器从AJAX重定向URL)
POST /parameters/alias/:id controllers.ParametersController.jsonAlias(id:Long)
5-最后控制器添加或不添加新值...等
public Result jsonAlias(Long parameterID)
{
JsonNode json = request().body().asJson();
ObjectMapper objectMapper = new ObjectMapper();
try {
List<Alias> list = objectMapper.readValue(json.toString(),TypeFactory.defaultInstance().constructCollectionType(List.class, Alias.class));
for(Alias x : list)
{
//Update
if(x.id != null)
{
Alias a = Alias.find.byId(x.id);
a.name = x.name;
a.parameters = Parameters.find.byId(parameterID);
a.update();
}
//Insert
else
{
Alias a = new Alias();
a.id = null;
a.name = x.name;
a.parameters = Parameters.find.byId(parameterID);
a.save();
}
}
} catch (IOException e) {e.printStackTrace();}
return GO_HOME;
}
<强> ---&GT;我正在寻找解析从VIEW发送到CONTROLLER的JSON数据的方法是:
List<Alias> list = objectMapper.readValue(json.toString(),TypeFactory.defaultInstance().constructCollectionType(List.class, Alias.class));
尽量不要忘记在模型中添加它:
//private List<Alias> listalias;
import io.ebean.Finder;
@Entity
@Table(name = "alias")
public class Alias extends Model
{
@Id
public Long id;
@Constraints.Required
@Formats.NonEmpty
public String name;
@ManyToOne
public Parameters parameters;
// This List will take Json as Object Model
private List<Alias> listalias;
public static final Finder<Long, Alias> find = new Finder<>(Alias.class);
}