首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

将JSON反序列化为类型化对象数组(Delphi 11)

在Delphi 11中,将JSON反序列化为类型化对象数组的过程可以通过使用Delphi自带的TJSONMarshal和TJSONUnmarshal类来实现。

首先,需要定义一个与JSON数据结构对应的类型化对象。假设我们有一个JSON数组,每个对象包含两个属性:name和age。

代码语言:txt
复制
type
  TPerson = class
  private
    FName: string;
    FAge: Integer;
  public
    property Name: string read FName write FName;
    property Age: Integer read FAge write FAge;
  end;

接下来,我们可以使用TJSONUnmarshal类将JSON数据反序列化为类型化对象数组。

代码语言:txt
复制
uses
  System.JSON, System.JSON.Types;

function DeserializeJSONToArray(jsonStr: string): TArray<TPerson>;
var
  jsonArray: TJSONArray;
  jsonValue: TJSONValue;
  jsonPair: TJSONPair;
  person: TPerson;
  i: Integer;
begin
  jsonArray := TJSONObject.ParseJSONValue(jsonStr) as TJSONArray;
  SetLength(Result, jsonArray.Count);
  
  for i := 0 to jsonArray.Count - 1 do
  begin
    jsonValue := jsonArray.Items[i];
    if jsonValue is TJSONObject then
    begin
      person := TPerson.Create;
      for jsonPair in (jsonValue as TJSONObject) do
      begin
        if jsonPair.JsonString.Value = 'name' then
          person.Name := jsonPair.JsonValue.Value
        else if jsonPair.JsonString.Value = 'age' then
          person.Age := jsonPair.JsonValue.Value.ToInteger;
      end;
      Result[i] := person;
    end;
  end;
end;

以上代码通过解析JSON字符串并逐个遍历数组中的对象,将数据转换为类型化对象数组。

使用示例:

代码语言:txt
复制
var
  jsonStr: string;
  personArray: TArray<TPerson>;
  person: TPerson;
begin
  // 假设jsonStr包含了一段JSON数组字符串

  personArray := DeserializeJSONToArray(jsonStr);
  
  for person in personArray do
  begin
    // 处理每个人的数据
    ShowMessage(Format('Name: %s, Age: %d', [person.Name, person.Age]));
  end;
end;

这样,你就可以成功地将JSON反序列化为类型化对象数组了。

推荐的腾讯云相关产品和产品介绍链接地址:

  • 腾讯云云服务器(CVM):https://cloud.tencent.com/product/cvm
  • 腾讯云对象存储(COS):https://cloud.tencent.com/product/cos
  • 腾讯云数据库(TencentDB):https://cloud.tencent.com/product/tencentdb
  • 腾讯云人工智能(AI):https://cloud.tencent.com/product/ai
  • 腾讯云物联网开发平台(IoT Hub):https://cloud.tencent.com/product/iothub
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

JSON字符串反序化为指定的.NET对象类型

前言:   关于JSON字符串反序化为指定的.NET对象类型数据常见的场景主要是关于网络请求接口,获取到请求成功的响应数据。...本篇主要讲的的是如何通过使用Newtonsoft.Json中的JsonConvert.DeserializeObject(string value)方法将对应的JSON字符串转化为指定的.NET对象类型数据...方法一、在项目中定义对应的对象参数模型,用于映射反序列化出来的参数(复杂JSON字符串数据推荐使用): 如下是一组.NET后台请求接口成功获取到的复杂的JSON字符串数据: { "id": "123456...public string period { get; set; } } 通过JsonConvert.DeserializeObject(string value)反序...方法二、直接JSON字符串格式数据反序化为字典数据(简单JSON字符串数据推荐使用): 如下一组简单的JSON字符串格式数据: { "id": "123456", "code"

3.1K20
  • Jackson行为特征SerializationFeature和DeserializationFeature【收藏】

    它们分别用于控制对象的序列反序过程中的各种特性和选项,通过在序列反序过程中配置这些特性,可以灵活控制 JSON 数据的解析和生成方式。...当遇到空数组时,解析为 null。 2、 ACCEPT_EMPTY_STRING_AS_NULL_OBJECT:允许空字符串反序化为 null 对象。当遇到空字符串时,解析为 null。...13、 ACCEPT_EMPTY_OBJECT_AS_NULL:允许对象({})反序化为 null 对象。当遇到空对象时,解析为 null。...15、 UNWRAP_ROOT_VALUE:允许解包根对象对象的属性直接提取为反序的结果。...19、 WRITE_CHAR_ARRAYS_AS_JSON_ARRAYS:字符数组(char[])序列化为 JSON 数组

    28910

    Java XML和JSON:Java SE的文档处理 第2部分

    在快速概述和安装说明之后,我向您展示如何使用JSON-B来序列反序Java对象数组和集合; 如何使用JSON-B自定义序列反序; 以及如何在序列反序期间使用JSON-B适配器对象转换为目标对象...查看JSON-B规范以获取支持类型的完整列表。 使用JSON-B序列反序数组和集合 上一节重点介绍了单个Java对象的序列反序JSON-B还支持序列反序对象数组和集合的功能。...JSON文档反序化为Java对象数组时,表达式Employee[].class作为第二个参数传递给fromJson(),以便它可以创建适当的数组。...在这篇文章中,我介绍了JSON-B并向您展示了如何使用它来序列反序Java对象数组和集合。...我还向您展示了如何使用JSON-B自定义序列反序,并向您介绍了JSON-B适配器,它们可用于在序列反序期间对象转换为目标对象

    3.4K20

    Java 数据库存储数组的方法

    本文详细介绍几种在Java中将数组存储到数据库的方法,包括使用JPA、JSON、XML、以及关系型数据库的数组类型等。 1....@JoinColumn注解指定了外键的名称。 2. 使用JSON数组存储到数据库 另一种存储数组的方法是数组序列化为JSON格式,并将其存储为数据库中的字符串。...RolesConverter类实现了AttributeConverter接口,并使用Jackson进行JSON序列反序。 3....使用XML数组存储到数据库 除了JSON,我们还可以使用XML格式数组存储为字符串。与JSON类似,首先需要将数组序列化为XML字符串,然后存储到数据库中。...使用关系型数据库的数组类型 一些现代关系型数据库(如PostgreSQL)支持数组类型,可以直接在数据库中存储数组。这种方法可以避免数组序列化为字符串,从而提高性能和查询的灵活性。

    10110

    Java 数据库存储数组的方法

    本文详细介绍几种在Java中将数组存储到数据库的方法,包括使用JPA、JSON、XML、以及关系型数据库的数组类型等。1....@JoinColumn注解指定了外键的名称。2. 使用JSON数组存储到数据库另一种存储数组的方法是数组序列化为JSON格式,并将其存储为数据库中的字符串。...RolesConverter类实现了AttributeConverter接口,并使用Jackson进行JSON序列反序。3....使用XML数组存储到数据库除了JSON,我们还可以使用XML格式数组存储为字符串。与JSON类似,首先需要将数组序列化为XML字符串,然后存储到数据库中。...使用关系型数据库的数组类型一些现代关系型数据库(如PostgreSQL)支持数组类型,可以直接在数据库中存储数组。这种方法可以避免数组序列化为字符串,从而提高性能和查询的灵活性。

    21000

    Jackson,最牛掰的 Java JSON 解析器

    02、使用 ObjectMapper Jackson 最常用的 API 就是基于”对象绑定” 的 ObjectMapper,它通过 writeValue 的系列方法 Java 对象序列化为 JSON,...ObjectMapper 通过 readValue 的系列方法从不同的数据源 JSON 反序化为 Java 对象。...) 方法,字节数组反序化为 Java 对象 readValue(File src, Class valueType) 方法,文件反序化为 Java 对象 来看一下字符串反序化为 Java...,比如说 java.util.Date,如果不指定格式,序列显示为 long 类型的数据,这种默认格式的可读性很差。...月26日 上午11:09:51" } 05、字段过滤 在 Java 对象序列化为 JSON 时,可能有些字段需要过滤,不显示在 JSON 中,Jackson 有一种比较简单的实现方式。

    1.8K20

    Delphi7用superobject解析Json数据

    前言 现在不管Webapi还是一般的数据通讯,用的基本都是Json,以前很多的应用程序都是用delphi7开发的,为了维护旧的程序以及与新的接口进行对接(如微信支付宝支付等),我们就用到了superobject...由于我们用的是D7,里面没有泛型等这些用法,所以也不存在什么类的序列反序直接生成Json。操作起来可能比较C#,Android等要麻烦点。...begin j:=TSuperObject.Create(stObject); //创建一个json对象,如果参数是stArray,j就是一个json数组,参数还可以是其它的变量类型,比如字符串...a:=TSuperObject.Create(stArray); //创建一个json数组a a.I['']:=111; //表示给a数组添加一个111元素。...《Delphi调用动态链接库》PosPayIntf动态库项目,先看一下我们的目录结构 ?

    7.3K10

    c++11:nlohmann::json进阶使用(二)应用adl_serializer解决第三方数据类型(such as uri)的序列反序

    在我的项目中我使用uri而不是普通的std::string来保存一个URI地址,但是在uri对象保存到 nlohmann::json 时遇到了麻烦。...) << std::endl; } 实际上直接这样写是不行的,因为uri是个第三方类型,并不是nlohmann::json支持的基本数据类型,所以nlohmann::json并不知道如何对它进行序列反序...& j, const T& value)和from_json(const BasicJsonType& j, T& value)函数,nlohmann/json才会知道怎么对这个类型进行序列反序...{ // uri 没有默认构造函数,要采用下面的方式提供序列反序方法,否则json::get()不能调用 template struct adl_serializer<uri...uri &u) { // 序列 // 调用 uri::to_string()函数uri对象转为std::string保存到json j = u.to_string(); }

    2.9K20

    Jackson用法详解

    JSON解析为Java对象也称为从JSON反序Java对象。 ObjectMapper也可以从Java对象创建JSON。...之所以称为ObjectMapper是因为它将JSON映射到Java对象反序),或者Java对象映射到JSON(序列)。...如果需要以其他方式JSON对象字段与Java对象字段匹配,则需要使用自定义序列器和反序器,或者使用一些Jackson注解。...Jackson可以JSON读取到JsonNode实例中,然后JsonNode写入JSON。 因此,这一节说明如何JSON反序化为JsonNode以及JsonNode序列化为JSON。...可以通过调用jsonParser参数的getText()方法来获取要反序的字段的值。 然后,可以将该文本反序化为任何值,然后输入反序程序所针对的类型(在此示例中为布尔值)。

    15.3K21

    golang json 序列反序 字符串反序

    JSON的序列JSON的序列是指数据结构或对象转换为JSON字符串的过程。在Golang中,可以使用​​json.Marshal()​​函数数据序列化为JSON字符串。...输出结果为:jsonCopy code{"name":"Alice","age":25}JSON反序JSON反序是指JSON字符串转换为数据结构或对象的过程。...json.Marshal()​​​函数一个结构体对象转换为JSON格式的字符串,并返回序列后的结果。 反序序列后的字符串重新转换为原始的数据结构或对象。...反序的过程是字符串解码为对应的数据结构,恢复出原始的数据形式。通过反序,我们可以存储文件、传输的数据等还原为原始的数据对象。...字符串反序是指序列后的字符串重新转换为原始的数据类型。字符串反序是序列的逆过程,最常见的应用场景是从文件中读取序列后的数据,并将其重新恢复为原始的数据格式。

    86910

    Jackson: java.util.LinkedHashMap cannot be cast to X

    JSON 反序化为List 让我们看看是否可以通过将此 JSON 文件反序化为List对象并从中读取元素来重现类转换问题: @Test void givenJsonString_whenDeserializingToList_thenThrowingClassCastException...因此,Jackson 会将 JSON 内容反序化为ArrayList对象,但它不知道ArrayList对象中应该包含什么类型的元素。...其次,当 Jackson 尝试反序 JSON 中的对象,但没有给出目标类型信息时,它将使用默认类型:LinkedHashMap。...它将被反序器使用,以便反序器在反序期间知道目标类型是什么。 ...6.创建通用反序方法 到目前为止,我们已经解决了在 JSON 数组反序化为 Java 集合时如何解决类转换问题。在现实世界中,我们可能希望创建一个通用方法来处理不同的元素类型

    2.2K20

    测试开发进阶(二十四)

    POST 从前端获取json格式的数据,转化为Python中的类型 为了严谨性,这里需要做各种复杂的校验 比如:是否为json,传递的项目数据是否符合要求,有些必传参数是否携带 向数据库中新增项目 模型类转化为字典...原始设计小结 创建接口的任务 校验用户数据 请求的数据(如json格式)转换为模型类对象 反序 将其他格式(json,xml等)转换为程序中的数据类型 json格式的字符串转换为Django中的模型类对象...操作数据库 模型类对象转换为响应的数据(如json格式) 序列 程序中的数据类型转换为其他格式(json,xml等) 例如Django中的模型类对象转换为json字符串 数据增删改查流程 增...校验请求参数 -> 反序 -> 保存数据 -> 保存的对象序列并返回 删 判断要删除的数据是否存在 -> 执行数据删除 改 判断要修改的数据是否存在 -> 校验请求参数 -> 反序 ->...保存数据 -> 保存的数据序列号并返回 查 查询数据库 -> 数据序列并返回 原始设计代码 import json from django.http import JsonResponse from

    1.1K50

    FastJson 笔记

    ()方法类似,parseArray()json字符串转化为json对象数组或转化成包含泛型的List JSON类之 toJSON() JSON类之toJSON()方法,实现javabean对象化为...json对象 该方法用的比较少,主要用于javabean对象化为json对象,内部通过Map,LinkedHashMap,HashMap等集合接口实现。...(str); } 输出结果 {"studentAge":12,"studentName":"lily"} JSON 字符串数组 ——》 JSONArray JSON字符串数组化为JSONArray...方式二:通过jsonArray.iterator()获取迭代器 /** * JSON字符串数组化为JSONArray,通过JSON的parseArray()方法 */ public static...字符串 用 JSON.toJSONString() 方法即可将 JSONArray 转化为 JSON 字符串 /** * JSONArray到json字符串-数组类型的转换 */ public static

    3.4K10

    FastJson 笔记

    ()方法类似,parseArray()json字符串转化为json对象数组或转化成包含泛型的List JSON类之 toJSON() JSON类之toJSON()方法,实现javabean对象化为...json对象 该方法用的比较少,主要用于javabean对象化为json对象,内部通过Map,LinkedHashMap,HashMap等集合接口实现。...(str); } 输出结果 {"studentAge":12,"studentName":"lily"} JSON 字符串数组 ——》 JSONArray JSON字符串数组化为JSONArray...方式二:通过jsonArray.iterator()获取迭代器 /** * JSON字符串数组化为JSONArray,通过JSON的parseArray()方法 */ public static...字符串 用 JSON.toJSONString() 方法即可将 JSONArray 转化为 JSON 字符串 /** * JSONArray到json字符串-数组类型的转换 */ public static

    4.4K10
    领券