Validate C# json/object-api options (#6985)

This commit is contained in:
Derek Bailey 2021-12-13 11:52:01 -08:00 committed by GitHub
parent c555ee8fac
commit b78002ff3e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 12 additions and 3 deletions

View File

@ -180,7 +180,8 @@ To use:
An additional feature of the object API is the ability to allow you to An additional feature of the object API is the ability to allow you to
serialize & deserialize a JSON text. serialize & deserialize a JSON text.
To use Json Serialization, add `--cs-gen-json-serializer` option to `flatc` and To use Json Serialization, add `--cs-gen-json-serializer` option to `flatc` and
add `Newtonsoft.Json` nuget package to csproj. add `Newtonsoft.Json` nuget package to csproj. This requires explicitly setting
the `--gen-object-api` option as well.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cs} ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.cs}
// Deserialize MonsterT from json // Deserialize MonsterT from json
@ -192,7 +193,7 @@ add `Newtonsoft.Json` nuget package to csproj.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* Limitation * Limitation
* `hash` attribute currentry not supported. * `hash` attribute currently not supported.
* NuGet package Dependency * NuGet package Dependency
* [Newtonsoft.Json](https://github.com/JamesNK/Newtonsoft.Json) * [Newtonsoft.Json](https://github.com/JamesNK/Newtonsoft.Json)

View File

@ -74,7 +74,7 @@ def flatc(
cmd += [schema] if isinstance(schema, str) else schema cmd += [schema] if isinstance(schema, str) else schema
if data: if data:
cmd += [data] if isinstance(data, str) else data cmd += [data] if isinstance(data, str) else data
subprocess.run(cmd, cwd=cwd) result = subprocess.run(cmd, cwd=cwd, check=True)
# Glob a pattern relative to file path # Glob a pattern relative to file path

View File

@ -184,6 +184,8 @@ std::string FlatCompiler::GetUsageString(const char *program_name) const {
" data using schema-less FlexBuffers.\n" " data using schema-less FlexBuffers.\n"
" --no-warnings Inhibit all warning messages.\n" " --no-warnings Inhibit all warning messages.\n"
" --cs-global-alias Prepend \"global::\" to all user generated csharp classes and structs.\n" " --cs-global-alias Prepend \"global::\" to all user generated csharp classes and structs.\n"
" --cs-gen-json-serializer Allows (de)serialization of JSON text in the Object\n"
" API. (requires --gen-object-api).\n"
"FILEs may be schemas (must end in .fbs), binary schemas (must end in .bfbs),\n" "FILEs may be schemas (must end in .fbs), binary schemas (must end in .bfbs),\n"
"or JSON files (conforming to preceding schema). FILEs after the -- must be\n" "or JSON files (conforming to preceding schema). FILEs after the -- must be\n"
"binary flatbuffer format files.\n" "binary flatbuffer format files.\n"
@ -435,6 +437,12 @@ int FlatCompiler::Compile(int argc, const char **argv) {
Error("no options: specify at least one generator.", true); Error("no options: specify at least one generator.", true);
} }
if (opts.cs_gen_json_serializer && !opts.generate_object_based_api) {
Error(
"--cs-gen-json-serializer requires --gen-object-api to be set as "
"well.");
}
flatbuffers::Parser conform_parser; flatbuffers::Parser conform_parser;
if (!conform_to_schema.empty()) { if (!conform_to_schema.empty()) {
std::string contents; std::string contents;