日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

008_JsonConfig对象

發(fā)布時(shí)間:2025/4/17 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 008_JsonConfig对象 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1.?Java轉(zhuǎn)JSON時(shí)忽略被注解標(biāo)記的字段

1.1.?void addIgnoreFieldAnnotation(Class annotationClass) 添加一個(gè)注解類對象, 用于構(gòu)建的時(shí)候忽略被該注解標(biāo)記的字段(Java-->JSON)。

1.2.?void addIgnoreFieldAnnotation(String annotationClassName) 添加一個(gè)注解對象名稱, 用于構(gòu)建的時(shí)候忽略被該注解標(biāo)記的字段(Java-->JSON)。

1.3.?void removeIgnoreFieldAnnotation(Class annotationClass) 移除一個(gè)注解類對象, 當(dāng)構(gòu)建的時(shí)候不再忽略被該注解標(biāo)記的字段。

1.4.?void removeIgnoreFieldAnnotation(String annotationClassName) 移除一個(gè)注解類對象名稱, 當(dāng)構(gòu)建的時(shí)候不再忽略被該注解標(biāo)記的字段。

1.5.?List getIgnoreFieldAnnotations() 獲取構(gòu)建的時(shí)候忽略字段注解列表。

1.6.?代碼

1.6.1. 標(biāo)記Sensor實(shí)體類的getWeightSensor()方法

@Deprecated public Boolean getWeightSensor() {return weightSensor; }

1.6.2. 新建一個(gè)名為JsonConfig的Java項(xiàng)目, 同時(shí)添加相關(guān)jar包。

1.6.3. 創(chuàng)建Sensor.java實(shí)體類

package com.fj.jc;import java.io.Serializable;/*** 傳感器*/ public class Sensor implements Serializable {private static final long serialVersionUID = 1L;private Boolean weightSensor; // 重力傳感器private Boolean fingerSensor; // 指紋傳感器private String otherSensor; // 其它傳感器public Sensor() {}public Sensor(Boolean weightSensor, Boolean fingerSensor, String otherSensor) {this.weightSensor = weightSensor;this.fingerSensor = fingerSensor;this.otherSensor = otherSensor;}@Deprecatedpublic Boolean getWeightSensor() {return weightSensor;}public void setWeightSensor(Boolean weightSensor) {this.weightSensor = weightSensor;}public Boolean getFingerSensor() {return fingerSensor;}public void setFingerSensor(Boolean fingerSensor) {this.fingerSensor = fingerSensor;}public String getOtherSensor() {return otherSensor;}public void setOtherSensor(String otherSensor) {this.otherSensor = otherSensor;}@Overridepublic String toString() {return "{weightSensor=" + weightSensor + ", fingerSensor=" + fingerSensor + ", otherSensor=" + otherSensor + "}";} }

1.6.4. 創(chuàng)建JsonConfigAddIgnoreFieldAnnotation.java, 忽略注解標(biāo)記字段代碼

package com.fj.jc;import java.util.List; import net.sf.json.JSONObject; import net.sf.json.JsonConfig;/*** 1. void addIgnoreFieldAnnotation(Class annotationClass) 添加一個(gè)注解類對象, 用于構(gòu)建的時(shí)候忽略被該注解標(biāo)記的字段(Java-->JSON)。* 2. void addIgnoreFieldAnnotation(String annotationClassName) 添加一個(gè)注解對象名稱, 用于構(gòu)建的時(shí)候忽略被該注解標(biāo)記的字段(Java-->JSON)。* 3. void removeIgnoreFieldAnnotation(Class annotationClass) 移除一個(gè)注解類對象, 當(dāng)構(gòu)建的時(shí)候不再忽略被該注解標(biāo)記的字段。* 4. void removeIgnoreFieldAnnotation(String annotationClassName) 移除一個(gè)注解類對象名稱, 當(dāng)構(gòu)建的時(shí)候不再忽略被該注解標(biāo)記的字段。* 5. List getIgnoreFieldAnnotations() 獲取構(gòu)建的時(shí)候忽略字段注解列表。*/ public class JsonConfigAddIgnoreFieldAnnotation {public static void main(String[] args) {Sensor sensor = new Sensor(true, true, "姿態(tài)感應(yīng)器、色溫傳感器");JsonConfig jsonConfig = new JsonConfig();// 添加一個(gè)Deprecated.class注解類對象, 用于構(gòu)建的時(shí)候忽略被該注解標(biāo)記的字段(Java-->JSON)。jsonConfig.addIgnoreFieldAnnotation(Deprecated.class);// 添加一個(gè)java.lang.Deprecated注解對象名稱, 用于構(gòu)建的時(shí)候忽略被該注解標(biāo)記的字段(Java-->JSON)。 // jsonConfig.addIgnoreFieldAnnotation("java.lang.Deprecated");// 移除Deprecated.class注解類對象, 當(dāng)構(gòu)建的時(shí)候不再忽略被該注解標(biāo)記的字段。 // jsonConfig.removeIgnoreFieldAnnotation(Deprecated.class);// 移除java.lang.Deprecated注解類對象名稱, 當(dāng)構(gòu)建的時(shí)候不再忽略被該注解標(biāo)記的字段。 // jsonConfig.removeIgnoreFieldAnnotation("java.lang.Deprecated");System.out.println(JSONObject.fromObject(sensor, jsonConfig));// 獲取構(gòu)建的時(shí)候忽略字段注解列表。List<?> list = jsonConfig.getIgnoreFieldAnnotations();for (Object object : list) {System.out.println(object);}} }

1.6.5. 創(chuàng)建JsonConfigAddIgnoreFieldAnnotation.java

2.?JSON事件

2.1.?void addJsonEventListener(JsonEventListener listener) 添加一個(gè)JSON事件, 事件在使用靜態(tài)方法把Java對象轉(zhuǎn)JSON對象并且事件觸發(fā)器開啟的時(shí)候被觸發(fā)(Java-->JSON)。

2.2.?public void enableEventTriggering() 開啟事件觸發(fā)器。

2.3.?public void disableEventTriggering() 關(guān)閉事件觸發(fā)器。

2.4.?boolean isEventTriggeringEnabled() 事件觸發(fā)器是否開啟。

2.5.?public void removeJsonEventListener(JsonEventListener listener) 移除JSON事件。

2.6.?List getJsonEventListeners() 獲取JSON事件列表。

2.7.?void clearJsonEventListeners() 清空J(rèn)SON事件。

2.8.?Interface JsonEventListener 當(dāng)構(gòu)建一個(gè)JSONObject對象或者JSONArray數(shù)組時(shí), 定義一個(gè)協(xié)議去處理JsonEvents。

2.8.1.?void onObjectStart() 開始解析一個(gè)對象的時(shí)候觸發(fā)該方法。

2.8.2.?void onPropertySet(String key, Object value, boolean accumulated) 當(dāng)為JSONObject設(shè)置一個(gè)屬性的時(shí)候觸發(fā)該方法。

2.8.3.?void onObjectEnd() 結(jié)束解析一個(gè)對象的時(shí)候觸發(fā)該方法。

2.8.4.?void onArrayStart() 開始解析一個(gè)數(shù)組的時(shí)候觸發(fā)該方法。

2.8.5.?void onElementAdded(int index, Object element) 給JSONArray添加一個(gè)元素的時(shí)候觸發(fā)該方法。

2.8.6.?void onArrayEnd() 結(jié)束解析一個(gè)數(shù)組的時(shí)候觸發(fā)該方法。

2.8.7.?void onWarning(String warning) ?當(dāng)發(fā)生一個(gè)警告的時(shí)候觸發(fā)該方法。

2.8.8.?void onError(JSONException jsone) 當(dāng)拋出一個(gè)異常的時(shí)候觸發(fā)該方法。

2.9.?創(chuàng)建JsonConfigAddJsonEventListener.java

package com.fj.jc;import java.util.List; import net.sf.json.JSONArray; import net.sf.json.JSONException; import net.sf.json.JSONObject; import net.sf.json.JsonConfig; import net.sf.json.util.JsonEventListener;/*** 1. void addJsonEventListener(JsonEventListener listener) 添加一個(gè)JSON事件, 事件在使用靜態(tài)方法把Java對象轉(zhuǎn)JSON對象并且事件觸發(fā)器開啟的時(shí)候被觸發(fā)(Java-->JSON)。* 2. public void enableEventTriggering() 開啟事件觸發(fā)器。* 3. public void disableEventTriggering() 關(guān)閉事件觸發(fā)器。* 4. boolean isEventTriggeringEnabled() 事件觸發(fā)器是否開啟。* 5. public void removeJsonEventListener(JsonEventListener listener) 移除JSON事件。* 6. List getJsonEventListeners() 獲取JSON事件列表。* 7. void clearJsonEventListeners() 清空J(rèn)SON事件。* * 8. Interface JsonEventListener 當(dāng)構(gòu)建一個(gè)JSONObject對象或者JSONArray數(shù)組時(shí), 定義一個(gè)協(xié)議去處理JsonEvents。* 8.1. void onObjectStart() 開始解析一個(gè)對象的時(shí)候觸發(fā)該方法。* 8.2. void onPropertySet(String key, Object value, boolean accumulated) 當(dāng)為JSONObject設(shè)置一個(gè)屬性的時(shí)候觸發(fā)該方法。* 8.3. void onObjectEnd() 結(jié)束解析一個(gè)對象的時(shí)候觸發(fā)該方法。* 8.4. void onArrayStart() 開始解析一個(gè)數(shù)組的時(shí)候觸發(fā)該方法。* 8.5. void onElementAdded(int index, Object element) 給JSONArray添加一個(gè)元素的時(shí)候觸發(fā)該方法。* 8.6. void onArrayEnd() 結(jié)束解析一個(gè)數(shù)組的時(shí)候觸發(fā)該方法。* 8.7. void onWarning(String warning) 當(dāng)發(fā)生一個(gè)警告的時(shí)候觸發(fā)該方法。 * 8.8. void onError(JSONException jsone) 當(dāng)拋出一個(gè)異常的時(shí)候觸發(fā)該方法。*/ public class JsonConfigAddJsonEventListener {public static void main(String[] args) {String[] mobileColor = { "亮黑色", "冰霜銀", "零度白", "深海藍(lán)", "晨曦金" };Sensor sensor = new Sensor(true, true, "姿態(tài)感應(yīng)器、色溫傳感器");MyJsonEventListener myJsonEventListener = new MyJsonEventListener();JsonConfig jsonConfig = new JsonConfig();jsonConfig.addJsonEventListener(myJsonEventListener); // 添加一個(gè)JSON事件jsonConfig.enableEventTriggering(); // 開啟事件觸發(fā)器。 // jsonConfig.disableEventTriggering(); // 關(guān)閉事件觸發(fā)器。System.out.println(jsonConfig.isEventTriggeringEnabled()); // 事件觸發(fā)器是否開啟。 // jsonConfig.removeJsonEventListener(myJsonEventListener); // 移除JSON事件。 // jsonConfig.clearJsonEventListeners(); // 清空J(rèn)SON事件。System.out.println(JSONArray.fromObject(mobileColor, jsonConfig)); // 把Java集合轉(zhuǎn)為JSONArray對象的時(shí)候傳入JSONConfigSystem.out.println(JSONObject.fromObject(sensor, jsonConfig)); // 把Java對象轉(zhuǎn)為JSONObject對象的時(shí)候傳入JSONConfigList<?> list = jsonConfig.getJsonEventListeners(); // 獲取JSON事件列表。for (Object object : list) {System.out.println(object);}} }class MyJsonEventListener implements JsonEventListener {@Overridepublic void onObjectStart() {System.out.println("開始解析一個(gè)對象的時(shí)候觸發(fā)該方法。");}@Overridepublic void onPropertySet(String key, Object value, boolean accumulated) {System.out.println("當(dāng)為JSONObject設(shè)置一個(gè)屬性的時(shí)候觸發(fā)該方法。");}@Overridepublic void onObjectEnd() {System.out.println("結(jié)束解析一個(gè)對象的時(shí)候觸發(fā)該方法。");}@Overridepublic void onArrayStart() {System.out.println("開始解析一個(gè)數(shù)組的時(shí)候觸發(fā)該方法。");}@Overridepublic void onElementAdded(int index, Object element) {System.out.println("給JSONArray添加一個(gè)元素的時(shí)候觸發(fā)該方法。");}@Overridepublic void onArrayEnd() {System.out.println("結(jié)束解析一個(gè)數(shù)組的時(shí)候觸發(fā)該方法。");}@Overridepublic void onWarning(String warning) {System.out.println("當(dāng)發(fā)生一個(gè)警告的時(shí)候觸發(fā)該方法。");}@Overridepublic void onError(JSONException jsone) {System.out.println("當(dāng)拋出一個(gè)異常的時(shí)候觸發(fā)該方法。");} }

2.10.?運(yùn)行JsonConfigAddJsonEventListener.java

3.?默認(rèn)值處理器(Java-->JSON)

3.1.?public void registerDefaultValueProcessor(Class target, DefaultValueProcessor defaultValueProcessor) 注冊一個(gè)默認(rèn)值處理器(Java-->JSON)。

3.2.?DefaultValueProcessor findDefaultValueProcessor(Class target) 查找目標(biāo)類的默認(rèn)值處理器。

3.3.?void unregisterDefaultValueProcessor(Class target) 移除默認(rèn)值處理器。

3.4.?Interface DefaultValueProcessor 當(dāng)一個(gè)類型為空指針的時(shí)候, 定義一個(gè)默認(rèn)值。

3.4.1.?Object getDefaultValue(Class type) 返回一個(gè)類型合適的默認(rèn)值。

3.5.?創(chuàng)建JsonConfigRegisterDefaultValueProcessor.java

package com.fj.jc;import net.sf.json.JSONObject; import net.sf.json.JsonConfig; import net.sf.json.processors.DefaultValueProcessor;/*** 1. public void registerDefaultValueProcessor(Class target, DefaultValueProcessor defaultValueProcessor) 注冊一個(gè)默認(rèn)值處理器(Java-->JSON)。* 2. DefaultValueProcessor findDefaultValueProcessor(Class target) 查找目標(biāo)類的默認(rèn)值處理器。* 3. void unregisterDefaultValueProcessor(Class target) 移除默認(rèn)值處理器。* * 4. Interface DefaultValueProcessor 當(dāng)一個(gè)類型為空指針的時(shí)候, 定義一個(gè)默認(rèn)值。 * 4.1. Object getDefaultValue(Class type) 返回一個(gè)類型合適的默認(rèn)值。*/ public class JsonConfigRegisterDefaultValueProcessor {public static void main(String[] args) {Sensor sensor = new Sensor(true, true, null);JsonConfig jsonConfig = new JsonConfig();// 注冊一個(gè)默認(rèn)值處理器jsonConfig.registerDefaultValueProcessor(String.class, new DefaultValueProcessor() {@Overridepublic Object getDefaultValue(Class type) {return "mynull";}});// 查找目標(biāo)類的默認(rèn)值處理器。DefaultValueProcessor dvp = jsonConfig.findDefaultValueProcessor(String.class);System.out.println(dvp);// 移除默認(rèn)值處理器。 // jsonConfig.unregisterDefaultValueProcessor(String.class);System.out.println(JSONObject.fromObject(sensor, jsonConfig));} }

3.6.?運(yùn)行JsonConfigRegisterDefaultValueProcessor.java

4.?屬性名處理器(JSON-->Java)

4.1.?void registerJavaPropertyNameProcessor(Class target, PropertyNameProcessor propertyNameProcessor) 注冊某個(gè)類的屬性名處理器(JSON-->Java)。

4.2.?PropertyNameProcessor findJavaPropertyNameProcessor(Class beanClass) 查找某個(gè)類的屬性名處理器。

4.3.?void unregisterJavaPropertyNameProcessor(Class target) 移除某個(gè)類的屬性名處理器。

4.4.?void clearJavaPropertyNameProcessors() 清空所有注冊的屬性名處理器。

4.5.?Interface PropertyNameProcessor 屬性名處理器, 用于Bean的屬性名轉(zhuǎn)變。

4.5.1.?String processPropertyName(Class beanClass, String name) 處理屬性名

4.6.?創(chuàng)建JsonConfigRegisterJavaPropertyNameProcessor.java

package com.fj.jc;import net.sf.json.JSONObject; import net.sf.json.JsonConfig; import net.sf.json.processors.PropertyNameProcessor;/*** 1. void registerJavaPropertyNameProcessor(Class target, PropertyNameProcessor propertyNameProcessor) 注冊某個(gè)類的屬性名處理器(JSON-->Java)。* 2. PropertyNameProcessor findJavaPropertyNameProcessor(Class beanClass) 查找某個(gè)類的屬性名處理器。* 3. void unregisterJavaPropertyNameProcessor(Class target) 移除某個(gè)類的屬性名處理器。* 4. void clearJavaPropertyNameProcessors() 清空所有注冊的屬性名處理器。* * 5. Interface PropertyNameProcessor 屬性名處理器, 用于Bean的屬性名轉(zhuǎn)變。* 5.1. String processPropertyName(Class beanClass, String name) 處理屬性名*/ public class JsonConfigRegisterJavaPropertyNameProcessor {public static void main(String[] args) {JsonConfig jsonConfig = new JsonConfig();// 注冊Sensor.class類的屬性名處理器jsonConfig.registerJavaPropertyNameProcessor(Sensor.class, new PropertyNameProcessor() {@Overridepublic String processPropertyName(Class beanClass, String name) {if(name.contains("-")) {String[] strArr = name.split("-");if(strArr.length >= 2) {name = strArr[0];for (int i = 1; i < strArr.length; i++) {if(strArr[i].length() > 0) {name += strArr[i].substring(0, 1).toUpperCase() + strArr[i].substring(1);}}}}return name;}});// 查找Sensor.class類的屬性名處理器System.out.println(jsonConfig.findJavaPropertyNameProcessor(Sensor.class));// 移除Sensor.class類的屬性名處理器 // jsonConfig.unregisterJavaPropertyNameProcessor(Sensor.class);// 清空所有注冊的屬性名處理器 // jsonConfig.clearJavaPropertyNameProcessors();String jsonStr = "{\"other-sensor\":\"姿態(tài)感應(yīng)器、色溫傳感器\",\"weight-sensor\":true,\"finger-sensor\":true}";JSONObject jsonObject = JSONObject.fromObject(jsonStr);jsonConfig.setRootClass(Sensor.class);// toBean的時(shí)候會調(diào)用屬性名處理器, 處理成想要的屬性名Sensor toSensor = (Sensor) JSONObject.toBean(jsonObject, jsonConfig);System.out.println(jsonObject.toString());System.out.println(toSensor);} }

4.7.?運(yùn)行JsonConfigRegisterJavaPropertyNameProcessor.java

5.?屬性名處理器(Java-->JSON)

5.1.?void registerJsonPropertyNameProcessor(Class target, PropertyNameProcessor propertyNameProcessor) 注冊某個(gè)類的屬性名處理器(Java-->JSON)。

5.2.?PropertyNameProcessor findJsonPropertyNameProcessor(Class beanClass) 查找某個(gè)類的屬性名處理器。

5.3.?void unregisterJsonPropertyNameProcessor(Class target) 移除某個(gè)類的屬性名處理器。

5.4.?void clearJsonPropertyNameProcessors() 清空屬性名處理器。

5.5.?創(chuàng)建JsonConfigRegisterJsonPropertyNameProcessor.java

package com.fj.jc;import net.sf.json.JSONObject; import net.sf.json.JsonConfig; import net.sf.json.processors.PropertyNameProcessor;/*** 1. void registerJsonPropertyNameProcessor(Class target, PropertyNameProcessor propertyNameProcessor) 注冊某個(gè)類的屬性名處理器(Java-->JSON)。* 2. PropertyNameProcessor findJsonPropertyNameProcessor(Class beanClass) 查找某個(gè)類的屬性名處理器。* 3. void unregisterJsonPropertyNameProcessor(Class target) 移除某個(gè)類的屬性名處理器。* 4. void clearJsonPropertyNameProcessors() 清空屬性名處理器。*/ public class JsonConfigRegisterJsonPropertyNameProcessor {public static void main(String[] args) {Sensor sensor = new Sensor(true, true, "姿態(tài)感應(yīng)器、色溫傳感器");JsonConfig jsonConfig = new JsonConfig();// 注冊Sensor.class類的屬性名處理器(jsonConfig.registerJsonPropertyNameProcessor(Sensor.class, new PropertyNameProcessor() {@Overridepublic String processPropertyName(Class beanClass, String name) {char[] ch = name.toCharArray();for (int i = 0; i < ch.length; i++) {if(65 <= ch[i] && ch[i] <= 90) {if(i == 0) {name = name.substring(0, 1).toLowerCase() + name.substring(1);continue;}name = name.substring(0, i) + "-" + name.substring(i, i+1).toLowerCase() + name.substring(i+1);ch = name.toCharArray();}}return name;}});// 查找Sensor.class類的屬性名處理器System.out.println(jsonConfig.findJsonPropertyNameProcessor(Sensor.class));// 移除Sensor.class類的屬性名處理器 // jsonConfig.unregisterJsonPropertyNameProcessor(Sensor.class);// 清空屬性名處理器 // jsonConfig.clearJsonPropertyNameProcessors();System.out.println(sensor);JSONObject jsonObject = JSONObject.fromObject(sensor, jsonConfig);System.out.println(jsonObject.toString());} }

5.6.?運(yùn)行JsonConfigRegisterJsonPropertyNameProcessor.java

6.?屬性值處理器(Java-->JSON)

6.1.?public void registerJsonValueProcessor(String key, JsonValueProcessor jsonValueProcessor) 注冊一個(gè)屬性值處理器(Java-->JSON)。

6.2.?void registerJsonValueProcessor(Class propertyType, JsonValueProcessor jsonValueProcessor) 注冊一個(gè)屬性值處理器(Java-->JSON)。

6.3.?public void registerJsonValueProcessor(Class beanClass, String key, JsonValueProcessor jsonValueProcessor) 注冊一個(gè)屬性值處理器(Java-->JSON)。

6.4.?void registerJsonValueProcessor(Class beanClass, Class propertyType, JsonValueProcessor jsonValueProcessor) 注冊一個(gè)屬性值處理器(Java-->JSON)。

6.5.?JsonValueProcessor findJsonValueProcessor(Class propertyType) 查找一個(gè)屬性值處理器。

6.6.?JsonValueProcessor findJsonValueProcessor(Class propertyType, String key) 查找一個(gè)屬性值處理器。

6.7.?JsonValueProcessor findJsonValueProcessor(Class beanClass, Class propertyType, String key) 查找一個(gè)屬性值處理器。

6.8.?public void unregisterJsonValueProcessor(String key) 移除一個(gè)屬性值處理器。

6.9.?public void unregisterJsonValueProcessor(Class propertyType) 移除一個(gè)屬性值處理器。

6.10.?public void unregisterJsonValueProcessor(Class beanClass, String key) 移除一個(gè)屬性值處理器。

6.11.?public void unregisterJsonValueProcessor(Class beanClass, Class propertyType) 移除一個(gè)屬性值處理器。

6.12.?void clearJsonValueProcessors() 清空屬性值處理器。

6.13.?Interface JsonValueProcessor 把屬性值, 處理成合適的值。

6.13.1.?Object processArrayValue(Object value, JsonConfig jsonConfig) 處理數(shù)組值, 返回一個(gè)合適的值。

6.13.2.?Object processObjectValue(String key, Object value, JsonConfig jsonConfig) 處理鍵關(guān)聯(lián)的值, 返回一個(gè)合適的值。

6.14.?創(chuàng)建JsonConfigRegisterJsonValueProcessor.java

package com.fj.jc;import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import net.sf.json.JSONObject; import net.sf.json.JsonConfig; import net.sf.json.processors.JsonValueProcessor;/*** 1. public void registerJsonValueProcessor(String key, JsonValueProcessor jsonValueProcessor) 按名稱, 注冊一個(gè)屬性值處理器(Java-->JSON)。* 2. void registerJsonValueProcessor(Class propertyType, JsonValueProcessor jsonValueProcessor) 按類型, 注冊一個(gè)屬性值處理器(Java-->JSON)。* 3. public void registerJsonValueProcessor(Class beanClass, String key, JsonValueProcessor jsonValueProcessor) 按某個(gè)Bean的字段類型, 注冊一個(gè)屬性值處理器(Java-->JSON)。* 4. void registerJsonValueProcessor(Class beanClass, Class propertyType, JsonValueProcessor jsonValueProcessor) 按某個(gè)Bean的字段名稱, 注冊一個(gè)屬性值處理器(Java-->JSON)。* 5. JsonValueProcessor findJsonValueProcessor(Class propertyType) 按類型, 查找屬性值處理器。* 6. JsonValueProcessor findJsonValueProcessor(Class propertyType, String key) 按類型和名稱, 查找屬性值處理器。* 7. JsonValueProcessor findJsonValueProcessor(Class beanClass, Class propertyType, String key) 按某個(gè)Bean的字段類型, 查找屬性值處理器。* 8. public void unregisterJsonValueProcessor(String key) 按名稱, 移除屬性值處理器。* 9. public void unregisterJsonValueProcessor(Class propertyType) 按類型, 移除屬性值處理器。* 10. public void unregisterJsonValueProcessor(Class beanClass, String key) 按某個(gè)Bean的字段名稱, 移除屬性值處理器。* 11. public void unregisterJsonValueProcessor(Class beanClass, Class propertyType) 按某個(gè)Bean的字段類型, 移除屬性值處理器。* 12. void clearJsonValueProcessors() 清空屬性值處理器。** 13. Interface JsonValueProcessor 把屬性值, 處理成合適的值。* 13.1. Object processArrayValue(Object value, JsonConfig jsonConfig) 處理數(shù)組值, 返回一個(gè)合適的值。* 13.2. Object processObjectValue(String key, Object value, JsonConfig jsonConfig) 處理鍵關(guān)聯(lián)的值, 返回一個(gè)合適的值。*/ public class JsonConfigRegisterJsonValueProcessor {public static void main(String[] args) {List<Object> time = new ArrayList<Object>(); time.add(new Date(System.currentTimeMillis())); Sensor sensor = new Sensor(true, true, "");Map<String, Object> mainParam = new HashMap<String, Object>();mainParam.put("mobileMemory", "128GB");mainParam.put("sensor", sensor);mainParam.put("time", time);JsonConfig jsonConfig = new JsonConfig();// 創(chuàng)建屬性名處理器JsonValueProcessor strJVP = new JsonValueProcessor() {// 對象值處理器@Overridepublic Object processObjectValue(String key, Object value, JsonConfig jsonConfig) {System.out.println(key + ":" + value);if(String.class.isAssignableFrom(value.getClass()) && "mobileMemory".equals(key)) {return "256GB";}if(String.class.isAssignableFrom(value.getClass())) {return "姿態(tài)感應(yīng)器、色溫傳感器";}if("fingerSensor".equals(key)) {return false;}return null;}// 數(shù)組值處理器@Overridepublic Object processArrayValue(Object value, JsonConfig jsonConfig) {return new SimpleDateFormat("yyyy-MM-dd").format(value);}};jsonConfig.registerJsonValueProcessor("mobileMemory", strJVP); // 按名稱, 注冊一個(gè)屬性值處理器jsonConfig.registerJsonValueProcessor(Date.class, strJVP); // 按類型, 注冊一個(gè)屬性值處理器jsonConfig.registerJsonValueProcessor(Sensor.class, String.class, strJVP); // 按某個(gè)Bean的字段類型, 注冊一個(gè)屬性值處理器jsonConfig.registerJsonValueProcessor(Sensor.class, "fingerSensor", strJVP); // 按某個(gè)Bean的字段名稱, 注冊一個(gè)屬性值處理器System.out.println(JSONObject.fromObject(mainParam, jsonConfig));System.out.println(jsonConfig.findJsonValueProcessor(Date.class)); // 按類型, 查找屬性值處理器System.out.println(jsonConfig.findJsonValueProcessor(null, "mobileMemory")); // 按類型和名稱, 查找屬性值處理器System.out.println(jsonConfig.findJsonValueProcessor(Sensor.class, String.class, null));// 按某個(gè)Bean的字段類型, 查找屬性值處理器jsonConfig.unregisterJsonValueProcessor(Date.class); // 按類型, 移除屬性值處理器jsonConfig.unregisterJsonValueProcessor("mobileMemory"); // 按名稱, 移除屬性值處理器jsonConfig.unregisterJsonValueProcessor(Sensor.class, "fingerSensor");// 按某個(gè)Bean的字段名稱, 移除屬性值處理器jsonConfig.unregisterJsonValueProcessor(Sensor.class, String.class); // 按某個(gè)Bean的字段類型, 移除屬性值處理器jsonConfig.clearJsonBeanProcessors(); // 清空屬性值處理器} }

6.15.?運(yùn)行JsonConfigRegisterJsonValueProcessor.java

7.?bean處理器(Java-->JSON)

7.1.?void registerJsonBeanProcessor(Class target, JsonBeanProcessor jsonBeanProcessor) 注冊一個(gè)Bean處理器(Java-->JSON)。

7.2.?JsonBeanProcessor findJsonBeanProcessor(Class target) 查找Bean處理器。

7.3.?void unregisterJsonBeanProcessor(Class target) 移除某個(gè)類的Bean處理器。

7.4.?void clearJsonBeanProcessors() 清除所有的Bean處理器。

7.5.?Interface JsonBeanProcessor Bean處理器

7.5.1.?JSONObject processBean(Object bean, JsonConfig jsonConfig) 處理Bean, 返回JSONObject代理。

7.6.?創(chuàng)建JsonConfigRegisterJsonBeanProcessor.java

package com.fj.jc;import java.lang.reflect.InvocationTargetException; import org.apache.commons.beanutils.BeanUtils; import net.sf.json.JSONObject; import net.sf.json.JsonConfig; import net.sf.json.processors.JsonBeanProcessor;/*** 1. void registerJsonBeanProcessor(Class target, JsonBeanProcessor jsonBeanProcessor) 注冊一個(gè)Bean處理器(Java-->JSON)。* 2. JsonBeanProcessor findJsonBeanProcessor(Class target) 查找Bean處理器。* 3. void unregisterJsonBeanProcessor(Class target) 移除某個(gè)類的Bean處理器。* 4. void clearJsonBeanProcessors() 清除所有的Bean處理器。* * 5. Interface JsonBeanProcessor Bean處理器* 5.1. JSONObject processBean(Object bean, JsonConfig jsonConfig) 處理Bean, 返回JSONObject代理。*/ public class JsonConfigRegisterJsonBeanProcessor {public static void main(String[] args) {Sensor sensor = new Sensor(true, true, "姿態(tài)感應(yīng)器、色溫傳感器");JsonConfig jsonConfig = new JsonConfig();// 注冊一個(gè)Bean處理器jsonConfig.registerJsonBeanProcessor(Sensor.class, new JsonBeanProcessor() {@Overridepublic JSONObject processBean(Object bean, JsonConfig jsonConfig) {Sensor s = (Sensor)bean;s.setWeightSensor(false);JSONObject jsonObject = new JSONObject();try {jsonObject.accumulateAll(BeanUtils.describe(bean));} catch (IllegalAccessException | InvocationTargetException | NoSuchMethodException e) {e.printStackTrace();}return jsonObject;}});// 查找Bean處理器System.out.println(jsonConfig.findJsonBeanProcessor(Sensor.class));// 移除Bean處理器 // jsonConfig.unregisterJsonBeanProcessor(Sensor.class);// 清除所有的Bean處理器 // jsonConfig.clearJsonBeanProcessors();System.out.println(JSONObject.fromObject(sensor, jsonConfig));} }

7.7.?運(yùn)行JsonConfigRegisterJsonBeanProcessor.java

8.?屬性去除(Java-->JSON)

8.1.?void registerPropertyExclusion(Class target, String propertyName) 去除某個(gè)屬性(Java-->JSON)。

8.2.?void registerPropertyExclusions(Class target, String[] properties) 去除一個(gè)或多個(gè)屬性(Java-->JSON)。

8.3.?void unregisterPropertyExclusions(Class target) 移除注冊的某個(gè)類的去除屬性。

8.4.?void unregisterPropertyExclusion(Class target, String propertyName) 移除注冊的某個(gè)類的某個(gè)屬性的去除屬性。

8.5.?void clearPropertyExclusions() 清空注冊的所有的去除屬性。

8.6.?創(chuàng)建JsonConfigRegisterPropertyExclusion.java

package com.fj.jc;import net.sf.json.JSONObject; import net.sf.json.JsonConfig;/*** 1. void registerPropertyExclusion(Class target, String propertyName) 去除某個(gè)屬性(Java-->JSON)。* 2. void registerPropertyExclusions(Class target, String[] properties) 去除一個(gè)或多個(gè)屬性(Java-->JSON)。* 3. void unregisterPropertyExclusions(Class target) 移除注冊的某個(gè)類的去除屬性。* 4. void unregisterPropertyExclusion(Class target, String propertyName) 移除注冊的某個(gè)類的某個(gè)屬性的去除屬性。* 5. void clearPropertyExclusions() 清空注冊的所有的去除屬性。*/ public class JsonConfigRegisterPropertyExclusion {public static void main(String[] args) {Sensor sensor = new Sensor(true, true, "姿態(tài)感應(yīng)器、色溫傳感器");JsonConfig jsonConfig = new JsonConfig();// 去除某個(gè)屬性 // jsonConfig.registerPropertyExclusion(Sensor.class, "weightSensor");// 去除一個(gè)或多個(gè)屬性jsonConfig.registerPropertyExclusions(Sensor.class, new String[] {"otherSensor", "fingerSensor"});// 移除注冊的某個(gè)類的去除屬性 // jsonConfig.unregisterPropertyExclusions(Sensor.class);// 移除注冊的某個(gè)類的某個(gè)屬性的去除屬性 // jsonConfig.unregisterPropertyExclusion(Sensor.class, "weightSensor"); // jsonConfig.clearPropertyExclusions(); // 清空注冊的所有的去除屬性System.out.println(JSONObject.fromObject(sensor, jsonConfig));} }

8.7.?運(yùn)行JsonConfigRegisterPropertyExclusion.java

總結(jié)

以上是生活随笔為你收集整理的008_JsonConfig对象的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。