解决Json与com更快的杰克逊依赖关系

时间:2017-02-06 17:58:33

标签: javascript java json

我想解析这个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"
    }
]

提前谢谢。

1 个答案:

答案 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);



}