完善BigDecimal的转换
diff --git a/dubbo/codec/decoder.py b/dubbo/codec/decoder.py
index 8ed126c..0585c42 100644
--- a/dubbo/codec/decoder.py
+++ b/dubbo/codec/decoder.py
@@ -223,11 +223,12 @@
result[field_name] = field_value
path = self.paths[ref]
- if path in ('java.math.BigDecimal', 'java.math.BigInteger'):
- # 从变量value中获取到真正的数值
+ if path == 'java.math.BigDecimal':
result = float(result['value'])
- if result == int(result):
- result = int(result)
+ self.objects[-1] = result or 0
+ elif path == 'java.math.BigInteger':
+ result = int(result['value'])
+ self.objects[-1] = result
return result
diff --git a/tests/run_test.py b/tests/run_test.py
index bff5745..ac3ecef 100644
--- a/tests/run_test.py
+++ b/tests/run_test.py
@@ -36,8 +36,8 @@
zk = ZkRegister('172.19.71.7:2181')
dubbo_cli = DubboClient('com.qianmi.pc.es.api.EsGoodsQueryProvider', zk_register=zk)
product_request = Object('com.qianmi.pc.es.api.request.EsGoodsListByIdStringRequest', values={
- 'chainMasterId': 'A857713',
- 'idString': 'NotUsed:g10346'
+ 'chainMasterId': 'A000000',
+ 'idString': 'NotUsed:g10529'
})
result = dubbo_cli.call('listByIdString', product_request)
pretty_print(result)