马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
标题描述
在使用fastjson调用
- JSON.toJSONString(JSON.parseObject(demo), features);
复制代码 fastJson包版本
- <dependency>
- <groupId>com.alibaba</groupId>
- <artifactId>fastjson</artifactId>
- <version>2.0.53</version>
- </dependency>
复制代码 方法将一个String转换成一个对象时,假如对象obj的属性字段有值为null时,该字段会被系列化成"";
传入String对象:
- {
- "code": "SUCCESS",
- "data": {
- "amount_of_handling_fees": null,
- "associate_amount": 200000,
- "associate_currency": "VND",
- "associate_risk_review_id": "",
- "client_rate": "1.0000000000000000",
- "credited_amount": null,
- "fx_order_no": "",
- "goods_tax": null,
- "incoming_payment_id": "SZLS2025021011112568049767730",
- "merchant_order_list": [
- {
- "merchant_order_no": "1889223743019364353",
- "order_associate_amount": 200000,
- "order_associate_amount_goods": null,
- "order_associate_amount_service": null,
- "order_currency": "VND",
- "order_goods_tax": null,
- "order_service_tax": null,
- "trade_order_no": "MYDD2025021116124303299021"
- }
- ],
- "order_associated_id": "AS202502111632520283768844",
- "risk_review_remark": "",
- "risk_review_type": "",
- "service_tax": null,
- "status": "processing",
- "tax_amount": null,
- "unsettlement_amount": 200000,
- "unsettlement_currency": "VND"
- },
- "message": "success",
- "timestamp": "2025-02-12T11:16:13+08:00"
- }
复制代码 使用系列化后
- String sortedJson = JSON.toJSONString( parseObject(demo));
复制代码- {
- "code": "SUCCESS",
- "data": {
- "associate_amount": 200000,
- "associate_currency": "VND",
- "associate_risk_review_id": "",
- "client_rate": "1.0000000000000000",
- "fx_order_no": "",
- "incoming_payment_id": "SZLS2025021011112568049767730",
- "merchant_order_list": [
- {
- "merchant_order_no": "1889223743019364353",
- "order_associate_amount": 200000,
- "order_currency": "VND",
- "trade_order_no": "MYDD2025021116124303299021"
- }
- ],
- "order_associated_id": "AS202502111632520283768844",
- "risk_review_remark": "",
- "risk_review_type": "",
- "status": "processing",
- "unsettlement_amount": 200000,
- "unsettlement_currency": "VND"
- },
- "message": "success",
- "timestamp": "2025-02-12T11:16:13+08:00"
- }
复制代码 标题描述:
我们可以很明显的看到系列化后null已经修改成""
标题分析
其实fastjson的toJSONString()。
源码分析:
com.alibaba.fastjson.JSON
- public static String toJSONString(Object object) {
- JSONWriter.Context context = createWriteContext(SerializeConfig.global, DEFAULT_GENERATE_FEATURE);
- try (JSONWriter writer = JSONWriter.of(context)) {
- if (object == null) {
- writer.writeNull();
- } else {
- writer.setRootObject(object);
- Class<?> valueClass = object.getClass();
- ObjectWriter objectWriter = context.getObjectWriter(valueClass, valueClass);
- objectWriter.write(writer, object, null, null, 0);
- }
- return writer.toString();
- } catch (com.alibaba.fastjson2.JSONException ex) {
- Throwable cause = ex.getCause() != null ? ex.getCause() : ex;
- throw new JSONException(ex.getMessage(), cause);
- } catch (RuntimeException ex) {
- throw new JSONException("toJSONString error", ex);
- }
- }
复制代码 com.alibaba.fastjson.JSON
- static {
- int features = 0;
- features |= SerializerFeature.QuoteFieldNames.getMask();
- features |= SerializerFeature.SkipTransientField.getMask();
- features |= SerializerFeature.WriteEnumUsingName.getMask();
- features |= SerializerFeature.SortField.getMask();
- DEFAULT_GENERATE_FEATURE = features;
- }
复制代码 从源码分析我们可以知道,JSON默认是换成""的
办理方法:
- SerializerFeature[] features = {
- SerializerFeature.MapSortField,
- SerializerFeature.WriteMapNullValue
- };
- String sortedJson = JSON.toJSONString(JSON.parseObject(demo), features);
复制代码 在使用时,也可以根据自己的需求来添加其他罗列类型,直接在后边添加即可。
最后,希望可以帮助到有必要的码友。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |