如何改变属性名称时,与dart json_serializable序列化?



这是一个json文件person.json

{
"first_name": "John",
"last_name": "Doe"
}

这是Person类

import 'package:json_annotation/json_annotation.dart';
part 'person.g.dart';
@JsonSerializable()
class Person {
/// The generated code assumes these values exist in JSON.
final String first_name, last_name;
/// The generated code below handles if the corresponding JSON value doesn't
/// exist or is empty.
final DateTime? dateOfBirth;
Person({required this.first_name, required this.last_name, this.dateOfBirth});
/// Connect the generated [_$PersonFromJson] function to the `fromJson`
/// factory.
factory Person.fromJson(Map<String, dynamic> json) => _$PersonFromJson(json);
/// Connect the generated [_$PersonToJson] function to the `toJson` method.
Map<String, dynamic> toJson() => _$PersonToJson(this);
}

下面是如何将json转换为person对象。

Person.fromJson(personJson);

json是使用蛇形的情况下下划线,我怎么能改变蛇形的情况下,序列化json?如何修改first_namefirstNamelast_namelastName

?

Fromjson_serializable'sREADME.md:

要为类生成To/from JSON代码,请使用JsonSerializable注释。您可以向JsonSerializable提供参数来配置生成的代码。您还可以通过使用JsonKey进行注释并提供自定义参数来定制单个字段。

你应该能够做:


@JsonSerializable()
class Person {
@JsonKey(name: 'first_name')
final String firstName;
@JsonKey(name: 'last_name')
final String lastName;
...
}
@JsonSerializable()  
class Person 
{   
final String firstName;
final String lastName;  
}

不要为每个字段定义@JsonKey(name:),你可以在构建中使用field_rename: snake。Yaml配置文件。它将生成所有字段json键到snake case。查看json可序列化构建配置

相关内容

  • 没有找到相关文章