[英]C#: In an object is it possible to convert decimal values to a string or double?
我有一个 Json object ,我是从 rest 调用中获得的,并且没有特定的格式。 是否可以遍历 object 并检查是否存在任何十进制值并将其转换为字符串/双精度值?
我需要将此 object 传递到不允许任何小数的 couchbaseLite 的 MutableDocument
Object
{
"performer": [
{
"referedBy": "ABDC",
"text": "XYZ"
}
],
"quantity": {
"value": 100.0, **// --> This should bee converted to "100.0"**
"system": "http://unitsofmeasure.org",
},
"range": [
{
"low": {
"value": 0.0, **// --> This should bee converted to "0.0"**
"system": "http://unitsofmeasure.org",
},
"text": "Total values"
}
]
}
我试图通过检查特定属性并修复它来做到这一点,即检查“数量”、“范围”等。但想知道是否有更好的方法来迭代 object,即一种可以迭代 object 的通用方法可以将小数转换为整数/双精度,因为我事先不知道 object 的确切格式。
代码:
private static void UpdateQuantity(JToken result)
{
var quantity = (result as JToken)["quantity"];
if (quantity == null)
{
return;
}
//update value from deciaml to string in quantity
string quantityValue = null;
foreach (JToken token in (result as JToken)["quantity"].Children())
{
JProperty ps = token as JProperty;
if (ps != null && ps.Name.Contains("value"))
{
quantityValue = ps.Value.ToString().Replace(',', '.');
ps.Replace(new JProperty("value", quantityValue as object));
break;
}
}
}
以下代码应该适合您
foreach (var token in
obj.DescendantsAndSelf().OfType<JObject>().SelectMany(o =>
o.Properties().Where(p => p.Value.Type == JTokenType.Integer || p.Value.Type == JTokenType.Float)))
{
token.Value = token.Value.ToString();
}
JObject
Integer
或Float
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.