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

API响应转DataTable时遇“JSON字符串含额外文本”错误

问题分析与解决方案

错误原因

你直接将API返回的JSON反序列化为DataTable,但当前API返回的是单个错误对象(结构为{"Status":"Failed","Code":"400","Message":"Request initiation failed"}),而DataTable对应的JSON结构必须是数组格式(例如[{"字段名":"值"},{"字段名":"值"}]),类型不匹配导致抛出"Additional text found in JSON string"错误。

解决步骤

  1. 定义API响应类
    先创建一个对应API返回结构的类,用来统一处理成功/失败的响应:

    public class ApiResponse
    {
        public string Status { get; set; }
        public string Code { get; set; }
        public string Message { get; set; }
        // 如果API成功时会返回数据列表,可添加Data字段
        // public List<object> Data { get; set; }
    }
    
  2. 修改代码逻辑
    先解析响应的状态,判断是失败还是成功,再做对应处理:

    inputJsonIPColoMaster = (new JavaScriptSerializer()).Serialize(inputIPColoMaster);
    
    WebClient client = new WebClient();
    client.Headers["Content-type"] = "application/json";
    client.Encoding = Encoding.UTF8;
    string json = client.UploadString(apiUrl, inputJsonIPColoMaster);
    
    DataTable dtRes = new DataTable();
    
    // 先解析API响应状态
    var apiResponse = JsonConvert.DeserializeObject<ApiResponse>(json);
    if ("Failed".Equals(apiResponse.Status, StringComparison.OrdinalIgnoreCase))
    {
        // 处理错误场景,比如抛出异常或记录日志
        throw new InvalidOperationException($"API请求失败:{apiResponse.Message}(错误码:{apiResponse.Code})");
    }
    else
    {
        // 若API成功时返回的是数组结构,直接反序列化为DataTable
        dtRes = JsonConvert.DeserializeObject<DataTable>(json);
        
        // 若API成功时返回的是包含数据的对象(如{"Status":"Success","Data":[]}),则调整为:
        // var successResponse = JsonConvert.DeserializeObject<SuccessApiResponse>(json);
        // dtRes = successResponse.Data;
    }
    

补充说明

如果API成功时的响应是包裹了数据的对象(而非直接返回数组),需要额外定义对应成功响应的类,例如:

public class SuccessApiResponse
{
    public string Status { get; set; }
    public DataTable Data { get; set; }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 14:53:11