2017-02-06 52 views
-2

我想解析此JSON对象数据,而不是用一行行将数据插入到数据库:解析JSON与COM更快杰克逊相依

这里是我的依赖关系:

"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" 
    } 
] 

谢谢你提前。

+1

所以,你想我们为你写一个pojo?在研究文档时,你究竟有什么不明白的地方? – baao

+0

我试图看看如何将这个XML转换成我可以逐行放入ebean模型(数据库)....并确保使用java控制器! –

回答

0

这是我做了什么来解决我的问题:

FI:进出口工作Play上的框架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到控制器)

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路线(路由器从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; 
} 

--->我一直在寻找解析从VIEW到控制器发出的我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); 



} 
+0

谢谢youuuuuuuuuuuu这么多,这正是我在找什么:) –