D 语言的 JSONValue 是一个结构体,用于表示 JSON 数据。它包含以下成员:

  • 'type':表示 JSON 值的类型,包括 'null'、'bool'、'int'、'double'、'string'、'array' 和 'object'。
  • '_bool':表示 bool 类型的值。
  • '_int':表示 int 类型的值。
  • '_double':表示 double 类型的值。
  • '_string':表示 string 类型的值。
  • '_array':表示 array 类型的值,是一个包含多个 JSONValue 的数组。
  • '_object':表示 object 类型的值,是一个包含多个键值对的 JSONValue。

解析复杂嵌套的 JSON

当遇到复杂嵌套的 JSON 时,可以使用 JSONValue 的 'array' 和 'object' 类型来表示。例如,以下是一个嵌套数组和对象的 JSON:

{
  'name': 'John',
  'age': 30,
  'cars': [
    { 'make': 'Ford', 'model': 'Mustang' },
    { 'make': 'BMW', 'model': 'X5' },
    { 'make': 'Fiat', 'model': '500' }
  ]
}

可以使用以下代码来解析该 JSON:

import std.json;

auto jsonString = `{'name':'John','age':30,'cars':[{'make':'Ford','model':'Mustang'},{'make':'BMW','model':'X5'},{'make':'Fiat','model':'500'}]}`;
auto jsonValue = parseJSON(jsonString);
auto name = jsonValue['name'].asString();
auto age = jsonValue['age'].asInt();
auto cars = jsonValue['cars'].asArray();

foreach (car; cars)
{
    auto make = car['make'].asString();
    auto model = car['model'].asString();
}

键值类型限制

在 JSON 中,键必须是字符串。如果需要使用数字作为键,可以将其转换为字符串。例如:

{
  '1': 'one',
  '2': 'two',
  '3': 'three'
}

可以使用以下代码来解析该 JSON:

import std.json;

auto jsonString = `{'1':'one','2':'two','3':'three'}`;
auto jsonValue = parseJSON(jsonString);
auto one = jsonValue['1'].asString();
auto two = jsonValue['2'].asString();
auto three = jsonValue['3'].asString();

通过这些示例代码,您可以轻松地解析和操作各种 JSON 数据,包括复杂嵌套的结构和不同类型的键值对。

D 语言 JSONValue 结构体:解析嵌套 JSON 和键值类型

原文地址: https://www.cveoy.top/t/topic/oelw 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录