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

如何将API返回的JSON字符串提取邮编转为C#基础字符串数组

嘿,我来帮你搞定这个问题!从API返回的JSON里提取邮编转成C#字符串数组其实不难,可能是你在解析JSON的时候踩了一些常见的小坑。我给你梳理两种最常用的实现方式,覆盖大部分场景:


先看个示例JSON(假设你的API返回结构类似这样)

{
  "地址列表": [
    { "街道": "主街123号", "邮编": "90210" },
    { "街道": "榆树大道456号", "邮编": "10001" },
    { "街道": "橡树路789号", "邮编": "60601" }
  ]
}

方式一:强类型模型解析(推荐,类型安全)

这种方式适合JSON结构固定的场景,通过定义匹配的模型类来解析,不容易出错。

用.NET内置的System.Text.Json(.NET Core/.NET5+可用)

// 定义和JSON结构对应的模型类
public class 地址
{
    // 用JsonPropertyName属性匹配JSON里的键(解决大小写/命名不一致问题)
    [JsonPropertyName("邮编")]
    public string 邮编 { get; set; }
}

public class 根对象
{
    [JsonPropertyName("地址列表")]
    public List<地址> 地址列表 { get; set; }
}

// 核心解析逻辑
string api返回的Json = /* 你的API返回字符串 */;
var 解析结果 = JsonSerializer.Deserialize<根对象>(api返回的Json);
// 提取邮编转成字符串数组,同时处理可能的null值
string[] 邮编数组 = 解析结果.地址列表.Select(addr => addr.邮编 ?? string.Empty).ToArray();

用Newtonsoft.Json(很多.NET Framework项目常用)

// 模型类类似,只是用JsonProperty属性映射
public class 地址
{
    [JsonProperty("邮编")]
    public string 邮编 { get; set; }
}

public class 根对象
{
    [JsonProperty("地址列表")]
    public List<地址> 地址列表 { get; set; }
}

// 解析逻辑
var 解析结果 = JsonConvert.DeserializeObject<根对象>(api返回的Json);
string[] 邮编数组 = 解析结果.地址列表.Select(addr => addr.邮编 ?? string.Empty).ToArray();

方式二:动态解析(不想写模型的时候用)

如果JSON结构不固定或者只是临时用,可以直接动态解析JSON节点:

System.Text.Json版本

string api返回的Json = /* 你的JSON字符串 */;
using JsonDocument doc = JsonDocument.Parse(api返回的Json);
JsonElement 根元素 = doc.RootElement;
JsonElement 地址数组 = 根元素.GetProperty("地址列表");

List<string> 邮编列表 = new List<string>();
foreach (JsonElement addr in 地址数组.EnumerateArray())
{
    // 安全获取邮编,避免空值报错
    string 邮编 = addr.GetProperty("邮编").GetString() ?? string.Empty;
    邮编列表.Add(邮编);
}
string[] 邮编数组 = 邮编列表.ToArray();

Newtonsoft.Json版本

string api返回的Json = /* 你的JSON字符串 */;
JObject 解析对象 = JObject.Parse(api返回的Json);
string[] 邮编数组 = 解析对象["地址列表"]
    .Select(addr => addr["邮编"]?.ToString() ?? string.Empty)
    .ToArray();

容易踩的几个坑

  • 大小写敏感:JSON里的键是邮编,模型里不能随便写成ZipCode,必须用属性映射或者完全一致;
  • 路径错误:如果你的API直接返回邮编数组(比如["90210", "10001"]),那直接反序列化成数组就行:string[] 邮编数组 = JsonSerializer.Deserialize<string[]>(api返回的Json);;
  • 空值处理:如果有些条目没有邮编,一定要加?? string.Empty这类判断,避免空引用异常;
  • 库版本问题:System.Text.Json是.NET Core之后才内置的,如果你用的是.NET Framework,建议用Newtonsoft.Json。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 09:19:31