You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解析包含波斯语键的JSON字符串?

解析含波斯语键的JSON字符串的解决方案

问题根源

你使用的[JsonProperty]是Newtonsoft.Json(Json.NET)的特性,但解析代码调用的是.NET原生的System.Text.Json.JsonSerializer,两者特性不兼容,导致解析失败。另外注意JSON里"شماره قرائت قبلی"的值是数字类型4123,但你模型里定义的是string类型,类型不匹配也会引发解析异常或值为null。

解决步骤

  1. 替换特性:将模型中的[JsonProperty]替换为System.Text.Json对应的[JsonPropertyName]特性,确保引用正确的命名空间。
  2. 修正类型匹配:根据JSON值的实际类型调整模型属性类型,或者配置解析器允许类型转换。

修改后的代码示例

修正后的模型类(匹配JSON数字类型)

using System.Text.Json.Serialization;

public class AdditionalModel
{
    [JsonPropertyName("شماره قرائت قبلی")]
    public int NoRead { get; set; }
    
    [JsonPropertyName("قطر انشعاب آب")]
    public string Diameter { get; set; }
}

若需保留string类型(允许数字转字符串)

using System.Text.Json;
using System.Text.Json.Serialization;

// 配置解析选项
var options = new JsonSerializerOptions
{
    NumberHandling = JsonNumberHandling.AllowReadingFromString | JsonNumberHandling.WriteAsString
};

// 解析JSON
string extraInfo = @"{""قطر انشعاب آب"":""1/2اینچ"",""شماره قرائت قبلی"":4123}";
var additional = JsonSerializer.Deserialize<AdditionalModel>(extraInfo, options);

验证解析结果

Console.WriteLine($"شماره قرائت قبلی: {additional.NoRead}"); // 输出 4123
Console.WriteLine($"قطر انشعاب آب: {additional.Diameter}"); // 输出 1/2اینچ

内容的提问来源于stack exchange,提问作者M Javad Salehi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 02:01:16