如何制作网站app,玩具外贸好做吗,网站备案能不能出现世界,互联网公司排名最新jackson使用Jackson api被广泛用于将json转换为Object并将Object转换为JSON。因此#xff0c;如果您有json字符串并想在java对象中进行转换#xff0c;请创建与json中的字段相同的bean的字段名。 Jackson在将json字段映射到java对象字段时遵循标准的bean约定#xff0c;但是… jackson使用 Jackson api被广泛用于将json转换为Object并将Object转换为JSON。因此如果您有json字符串并想在java对象中进行转换请创建与json中的字段相同的bean的字段名。 Jackson在将json字段映射到java对象字段时遵循标准的bean约定但是如果您有一个不遵循命名约定的json对于以大写字母开头的ex字段jackson不知道如何将此字段与您的java对象映射。 您可以使用JsonProperty批注但有时很难在每个类的每个字段上都使用此批注。这就是PropertyNamingStrategy的 用意 。 您可以根据需要修改此类。 让我们举个例子。 我们有一个像这样的json {CustName:Abhishek Somani,Result:null,CustNo:1234} 请注意每个字段的首字母均为大写字母这不是标准的bean命名约定。 我们正在尝试将此json映射到以下bean public class JsonBean {/*** */private String custNo ;private String custName ; private String result;public String getResult() {return result;}public void setResult(String result) {this.result result;}public String getCustNo() {return custNo;}public void setCustNo(String custNo) {this.custNo custNo;}public String getCustName() {return custName;}public void setCustEm(String custName) {this.custName custName;}
} 要将这个json映射到jsonBean我们必须创建自己的自定义命名策略如下所示。 在这里我们将字段名称的首字母转换为大写。 import org.codehaus.jackson.map.MapperConfig;
import org.codehaus.jackson.map.PropertyNamingStrategy;
import org.codehaus.jackson.map.introspect.AnnotatedField;
import org.codehaus.jackson.map.introspect.AnnotatedMethod;public class MyNameStrategy extends PropertyNamingStrategy{Overridepublic String nameForField(MapperConfigconfig,AnnotatedField field, String defaultName) {return convert(defaultName);}Overridepublic String nameForGetterMethod(MapperConfigconfig,AnnotatedMethod method, String defaultName) {return convert(defaultName);}Overridepublic String nameForSetterMethod(MapperConfigconfig,AnnotatedMethod method, String defaultName) {String a convert(defaultName); return a;}public String convert(String defaultName ){char[] arr defaultName.toCharArray();if(arr.length !0){if ( Character.isLowerCase(arr[0])){char upper Character.toUpperCase(arr[0]);arr[0] upper;}}return new StringBuilder().append(arr).toString();}} 这是要测试的主要课程。 我们正在Jackson的ObjectMapper中设置customNamingStrategy。 import java.io.File;
import java.io.IOException;import org.codehaus.jackson.JsonParseException;
import org.codehaus.jackson.map.JsonMappingException;
import org.codehaus.jackson.map.ObjectMapper;public class JsonTest {public static void main(String[] args) throws JsonParseException, JsonMappingException, IOException {ObjectMapper mapper new ObjectMapper();mapper.setPropertyNamingStrategy(new MyNameStrategy());File f new File(F:/abc.json);JsonBean bean (JsonBean)mapper.readValue(f, JsonBean.class);mapper.writeValue(new File(F:/abc1.json),bean);System.out.println(bean.getCustEm());}} 如果您无法提供命名策略则会得到如下所示的Exception Exception in thread main org.codehaus.jackson.map.exc.UnrecognizedPropertyException: Unrecognized field CustNo (Class JsonBean), not marked as ignorable 参考 JavaJ2EE和Server博客上的JCG合作伙伴 Abhishek Somani的Jackson中的PropertyNamingStrategy用法 。 翻译自: https://www.javacodegeeks.com/2013/04/how-to-use-propertynamingstrategy-in-jackson.htmljackson使用