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

使用lkJSON解析JSON文件并提取单个值的技术咨询

使用lkJSON解析JSON并提取单个值

嗨,我来帮你搞定用lkJSON解析这份JSON并提取单个值的问题。首先把你提供的JSON内容贴出来方便参考:

{ 
  "user": { 
    "pk": 25025320, 
    "username": "instagram", 
    "full_name": "Instagram", 
    "is_private": false, 
    "profile_pic_url": "https://instagram.fmad3-5.fna.fbcdn.net/vp/295f9e76d3c26fdf613d7856e7b43348/5B4F495B/t51.2885-19/s150x150/14719833_310540259320655_1605122788543168512_a.jpg", 
    "profile_pic_id": "1360316971354486387_25025320", 
    "is_verified": true, 
    "has_anonymous_profile_picture": false, 
    "media_count": 5164, 
    "follower_count": 2339010
  } 
}

基本步骤(以Delphi为例,lkJSON是Delphi生态的常用JSON解析库)

首先确保你已经在项目中引入了lkJSON单元,然后按照以下流程操作:

  1. 解析JSON字符串:把JSON内容加载到TLKJSONobject实例中,一定要做好内存管理避免泄漏。
  2. 提取目标值:可以用lkJSON便捷的点路径访问,或者嵌套对象访问来获取单个值。

代码示例

1. 基础解析框架

uses lkJSON;

procedure ParseInstagramJSON(const json_str: string);
var
  JsonObj: TLKJSONobject;
begin
  // 解析JSON字符串为对象
  JsonObj := TLKJSON.ParseText(json_str) as TLKJSONobject;
  try
    // 在这里添加提取值的代码
  finally
    // 务必释放对象,避免内存泄漏
    JsonObj.Free;
  end;
end;

2. 提取不同类型的单个值

  • 提取字符串值(比如username):
var
  username: string;
begin
  // 方法1:直接用点路径访问,简单高效
  username := JsonObj.GetValue('user.username', ''); 
  // 方法2:嵌套访问对象,适合复杂结构校验
  username := (JsonObj['user'] as TLKJSONobject).GetValue('username', '');
  ShowMessage('Username: ' + username); // 输出 "instagram"
end;
  • 提取整数值(比如pk或media_count):
var
  pk: Integer;
  mediaCount: Integer;
begin
  pk := JsonObj.GetValue('user.pk', 0);
  mediaCount := JsonObj.GetValue('user.media_count', 0);
  ShowMessage('PK: ' + IntToStr(pk) + #13#10 + 'Media Count: ' + IntToStr(mediaCount));
end;
  • 提取布尔值(比如is_verified):
var
  isVerified: Boolean;
begin
  isVerified := JsonObj.GetValue('user.is_verified', False);
  ShowMessage('Is Verified: ' + BoolToStr(isVerified, True)); // 输出 "True"
end;

实用小提示

  • GetValue方法的第二个参数是默认值,如果指定的路径/键不存在,就会返回这个默认值,能有效避免程序因JSON结构变化报错。
  • 如果你不确定JSON结构是否稳定,建议先判断对象是否存在,比如:
var
  UserObj: TLKJSONobject;
begin
  UserObj := JsonObj['user'] as TLKJSONobject;
  if Assigned(UserObj) then
  begin
    // 安全提取user下的属性
  end;
end;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 07:47:10