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

开发Web API应用解析Telegram数据时遇JSON text字段解析问题求助

解决Telegram API中text字段多类型解析问题

Telegram返回的JSON数据里,text字段存在两种格式:要么是纯字符串,要么是包含text属性的对象数组。不用写自定义JSON转换器,这几种简便方法就能搞定:

方法1:用动态类型直接判断(Json.NET)

先把JSON解析成JToken,再根据类型提取文本:

var jsonObj = JObject.Parse(yourJsonString);
var textToken = jsonObj["text"];
string finalText = string.Empty;

if (textToken.Type == JTokenType.String)
{
    finalText = textToken.ToString();
}
else if (textToken.Type == JTokenType.Array)
{
    // 拼接数组里所有对象的text内容
    finalText = string.Join("", textToken.Select(item => item["text"].ToString()));
}

方法2:用System.Text.Json的JsonElement处理

如果用.NET Core默认的System.Text.Json,用JsonElement判断值类型:

using var doc = JsonDocument.Parse(yourJsonString);
var root = doc.RootElement;
var textElement = root.GetProperty("text");
string finalText = string.Empty;

if (textElement.ValueKind == JsonValueKind.String)
{
    finalText = textElement.GetString();
}
else if (textElement.ValueKind == JsonValueKind.Array)
{
    var sb = new StringBuilder();
    foreach (var item in textElement.EnumerateArray())
    {
        sb.Append(item.GetProperty("text").GetString());
    }
    finalText = sb.ToString();
}

方法3:定义兼容的强类型实体类(推荐)

如果想要强类型解析,可以定义一个兼容两种格式的实体类,通过辅助方法获取最终文本:

// System.Text.Json 版本,Json.NET 替换为 [JsonProperty]
public class TelegramMessage
{
    [JsonPropertyName("text")]
    public string Text { get; set; }

    [JsonPropertyName("text")]
    public List<TextSegment> TextSegments { get; set; }

    // 获取合并后的文本
    public string GetFullText()
    {
        if (!string.IsNullOrEmpty(Text))
            return Text;
        return TextSegments != null ? string.Join("", TextSegments.Select(s => s.Text)) : string.Empty;
    }
}

public class TextSegment
{
    public string Type { get; set; }
    public string Text { get; set; }
}

解析时JSON库会自动匹配对应类型,调用GetFullText()就能拿到统一的文本内容。

内容的提问来源于stack exchange,提问作者Red Star

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 03:40:46