在我的plc上位机项目中,需要将 PLC 采集到的各种类型数据,统一转换为 JSON 接口需要的字符串格式,确保:
-
数值格式固定(不受服务器区域影响)
-
布尔值统一为
true/false(而非True/False或1/0) -
字符串原样传递
那么就可以使用下面这个简单封装的类
cs
/// <summary>
/// 将采集到的 CLR 值转为上传用字符串(数字用不变区域格式,布尔为 true/false)。
/// </summary>
public static string ValueToString(object val)
{
if (val == null)
return string.Empty;
if (val is bool)
return (bool)val ? "true" : "false";
if (val is string)
return (string)val;
IFormattable fmt = val as IFormattable;
if (fmt != null)
return fmt.ToString(null, CultureInfo.InvariantCulture);
return Convert.ToString(val, CultureInfo.InvariantCulture) ?? string.Empty;
}
// 最终 POST 到业务接口的 JSON 示例
cs
{
"temperature": "123.456", // 而不是 "123,456"
"valveStatus": "true", // 而不是 "True"
"message": "OK",
"timestamp": "07/01/2026 14:30:25"
}
实现了:
-
统一字符串化 - 所有值都转成字符串,避免 JSON 序列化时的类型歧义
-
文化不变性 - 数值格式固定,业务接口解析时不会出错
-
JSON 友好 - 布尔值小写符合 JSON 标准