Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用Jackson处理Ember JSON API请求_Java_Json_Ember.js_Jackson_Servlet 3.0 - Fatal编程技术网

Java 使用Jackson处理Ember JSON API请求

Java 使用Jackson处理Ember JSON API请求,java,json,ember.js,jackson,servlet-3.0,Java,Json,Ember.js,Jackson,Servlet 3.0,我使用Ember构建客户机应用程序,后端是一个Javaservlet,用于处理调用 来自ember的创建客户呼叫如下所示: { "customer":{ "name":"4545", "email":"454545", "authenticator":"facebook" } } JsonNode rootNode = mapper.readTree(jsonData); Iterator iterator = rootNode.fiel

我使用Ember构建客户机应用程序,后端是一个Javaservlet,用于处理调用

来自ember的创建客户呼叫如下所示:

{  
   "customer":{  
      "name":"4545",
      "email":"454545",
      "authenticator":"facebook"
   }
}
JsonNode rootNode = mapper.readTree(jsonData);
Iterator iterator = rootNode.fields();
Entry first = (Entry) iterator.next();
ObjectNode node = (ObjectNode) first.getValue();
mapper.readValue(node.toString(), Customer.class); 
有了这种格式的JSON数据,我无法使用Jackson提供的简单解决方案

mapper.readValue(jsonData, Customer.class); 
因为客户字段不在JSON数据的第一级。我必须处理JSON数据以获取客户字段,实现方式如下:

{  
   "customer":{  
      "name":"4545",
      "email":"454545",
      "authenticator":"facebook"
   }
}
JsonNode rootNode = mapper.readTree(jsonData);
Iterator iterator = rootNode.fields();
Entry first = (Entry) iterator.next();
ObjectNode node = (ObjectNode) first.getValue();
mapper.readValue(node.toString(), Customer.class); 

但是我正在寻找一个更好的方法,或者从杰克逊那里得到一些现成的东西。有什么建议吗?

尝试忽略第一级数据以忽略
客户
字段,并使用属性处理内部数据(此功能包含在1.9.0及更高版本中)):

允许“展开”根级别JSON值的功能,以匹配用于序列化的SerializationConfig.Feature.WRAP_root_值的设置。将验证根JSON值是否为JSON对象,以及它是否具有具有预期根名称的单个属性。如果不是,则抛出一个JsonMappingException;否则,包装属性的值将被反序列化,就像它是根值一样

这将只包括一条配置映射器的附加说明:

mapper.configure(SerializationConfig.Feature.UNWRAP\u ROOT\u值,true);
尝试
{
Customer=mapper.readValue(jsonData,Customer.class);
}
捕获(ioe异常ioe)
{
//...
}
如果尚未添加,您可能还需要添加模型类的根元素名称,以便Jackson在反序列化时将其与JSON提要中的根级别名称匹配:

@JsonRootName(“客户”)
公共类客户{
//...
}

尝试忽略第一级数据以忽略
客户
字段,并使用属性处理内部数据(此功能包含在1.9.0及更高版本中)):

允许“展开”根级别JSON值的功能,以匹配用于序列化的SerializationConfig.Feature.WRAP_root_值的设置。将验证根JSON值是否为JSON对象,以及它是否具有具有预期根名称的单个属性。如果不是,则抛出一个JsonMappingException;否则,包装属性的值将被反序列化,就像它是根值一样

这将只包括一条配置映射器的附加说明:

mapper.configure(SerializationConfig.Feature.UNWRAP\u ROOT\u值,true);
尝试
{
Customer=mapper.readValue(jsonData,Customer.class);
}
捕获(ioe异常ioe)
{
//...
}
如果尚未添加,您可能还需要添加模型类的根元素名称,以便Jackson在反序列化时将其与JSON提要中的根级别名称匹配:

@JsonRootName(“客户”)
公共类客户{
//...
}

尝试忽略第一级数据以忽略
客户
字段,并使用属性处理内部数据(此功能包含在1.9.0及更高版本中)):

允许“展开”根级别JSON值的功能,以匹配用于序列化的SerializationConfig.Feature.WRAP_root_值的设置。将验证根JSON值是否为JSON对象,以及它是否具有具有预期根名称的单个属性。如果不是,则抛出一个JsonMappingException;否则,包装属性的值将被反序列化,就像它是根值一样

这将只包括一条配置映射器的附加说明:

mapper.configure(SerializationConfig.Feature.UNWRAP\u ROOT\u值,true);
尝试
{
Customer=mapper.readValue(jsonData,Customer.class);
}
捕获(ioe异常ioe)
{
//...
}
如果尚未添加,您可能还需要添加模型类的根元素名称,以便Jackson在反序列化时将其与JSON提要中的根级别名称匹配:

@JsonRootName(“客户”)
公共类客户{
//...
}

尝试忽略第一级数据以忽略
客户
字段,并使用属性处理内部数据(此功能包含在1.9.0及更高版本中)):

允许“展开”根级别JSON值的功能,以匹配用于序列化的SerializationConfig.Feature.WRAP_root_值的设置。将验证根JSON值是否为JSON对象,以及它是否具有具有预期根名称的单个属性。如果不是,则抛出一个JsonMappingException;否则,包装属性的值将被反序列化,就像它是根值一样

这将只包括一条配置映射器的附加说明:

mapper.configure(SerializationConfig.Feature.UNWRAP\u ROOT\u值,true);
尝试
{
Customer=mapper.readValue(jsonData,Customer.class);
}
捕获(ioe异常ioe)
{
//...
}
如果尚未添加,您可能还需要添加模型类的根元素名称,以便Jackson在反序列化时将其与JSON提要中的根级别名称匹配:

@JsonRootName(“客户”)
公共类客户{
//...
}

谢谢!还使用了mapper.configure(SerializationFeature.WRAP\u ROOT\u值,true);当然,你的序列化风格应该与反序列化风格相结合,但既然你在OP中没有解决这个问题,我就不想抓住主要问题。:)谢谢还使用了mapper.configure(SerializationFeature.WRAP\u ROOT\u值,true);当然,你的序列化风格应该与反序列化风格相结合,但既然你在OP中没有解决这个问题,我就不想抓住主要问题。:)谢谢还使用了mapper.configure(SerializationFeature.WRAP\u ROOT\u值,true);当然,你的序列化风格应该与反序列化风格相结合,但既然你在OP中没有解决这个问题,我就不想抓住主要问题。:)谢谢还使用了mapper.configure(SerializationFeature.WRAP\u ROOT\u值,true);瑞典伏特加