gpt4 book ai didi

C#:在对象中是否可以将十进制值转换为字符串或 double 值?

转载 作者:行者123 更新时间:2023-12-05 03:20:13 25 4
gpt4 key购买 nike

我有一个从 rest 调用中获取的 Json 对象,没有特定格式。是否可以遍历对象并检查是否存在任何十进制值并将其转换为字符串/ double 值?

我需要将此对象传递到不允许任何小数的 couchbaseLite 的 MutableDocument

对象

{
"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"
}
]
}

我尝试通过检查特定属性并修复它来做到这一点,即检查“数量”、“范围”等。但想知道是否有更好的方法来遍历对象,即通用方法可以遍历可以将小数转换为整数/ double 的对象,因为我事先不知道对象的确切格式。

代码:

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();
}

dotnetfiddle

  • 获取根对象的所有后代,包括它自己。
  • 哪些是JObject
  • 选择他们所有的属性...
  • ...属性值的 JSON 类型是 IntegerFloat
  • 对于每一个,将值更改为相同值的字符串化形式。

关于C#:在对象中是否可以将十进制值转换为字符串或 double 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73240304/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com