setzen Ich bin in Objective-C programmieren. Ich verwende Apache Avro für die Datenserialisierung.arrary Daten in Avro Array-Typ mit C-Sprache
Mein avro Schema ist dies:
{
"name": "School",
"type":"record",
"fields":[
{
"name":"Employees",
"type":["null", {"type": "array",
"items":{
"name":"Teacher",
"type":"record",
"fields":[
{"name":"name", "type":"string"}
{"name":"age", "type":"int"}
]
}
}
],
"default":null
}
]
}
In meinem Objective-C-Code, ich habe ein Array von Teacher
Objekten, jedes Lehrer-Objekt enthält Wert von name
& age
.
Ich möchte die Lehrer-Array-Daten in Datei mit Avro mit dem oben gezeigten Schema schreiben. Ich mache mir hauptsächlich Sorgen darüber, wie man Daten in das Employees
Array schreibt, das im obigen Schema definiert ist.
Hier ist mein Code (ich habe C-Stil-Code zu verwenden, es zu tun, ich folge der Avro C documentation):
// I don't show this function, it constructs the a `avro_value_t` based on the schema. No problem here.
avro_value_t school = [self constructSchoolValueForSchema];
// get "Employees" field
avro_value_t employees;
avro_value_get_by_name(school, "employees", &employees, 0);
int idx = 0;
for (Teacher *teacher in teacherArray) {
// get name and age
NSString *name = teacher.name;
int age = teacher.age;
// set value to avro data type.
// here 'unionField' is the field of 'Employees', it is a Avro union type which is either null or an array as defined in schema above
avro_value_t field, unionField;
avro_value_set_branch(&employees, 1, &unionField);
// based on documentation, I should use 'avro_value_append'
avro_value_append(&employees, name, idx);
// I get confused here!!!!
// in above line of code, I append 'name' to 'employees',
//which looks not correct,
// because the 'Employees' array is an array of 'Teacher', not arrary of 'name'
// What is the correct way to add teacher to 'employees' ?
idx ++;
}
Die Frage, die ich stellen möchte, ist tatsächlich in dem Code Kommentar oben.
Ich folge dieser Avro C-Dokumentation, aber ich verliere, wie kann ich jede teacher
zu employees
hinzufügen? In meinem obigen Code fügte ich nur die name
jedes Lehrers zu dem employees
Array hinzu.