Exemplo n.º 1
0
 static TextWriter GetTextWriter(JsonOptions options)
 {
     if (options.OutputFile == null)
     {
         return(Console.Out);
     }
     else
     {
         return(new StreamWriter(options.OutputFile, false, Encoding.UTF8));
     }
 }
Exemplo n.º 2
0
        static IEnumerable <Table> GetTables(JsonOptions options)
        {
            var connectionString =
                new ConnectionString(options.AccessFilePath, options.Password);

            using (var db = new DB(connectionString)) {
                var tableNames = options.Tables.Any()
                    ? options.Tables
                    : db.Tables.Select(t => t.Name);

                foreach (var tableName in tableNames)
                {
                    var rows = db.GetTableData(tableName).ToArray();
                    yield return(new Table(tableName, rows));
                }
            }
        }
Exemplo n.º 3
0
        static int GenerateJson(JsonOptions options)
        {
            var tables = GetTables(options);

            using (var writer = GetTextWriter(options))
                using (var json = new JsonTextWriter(writer)) {
                    if (options.PrettyPrint)
                    {
                        json.Formatting  = Formatting.Indented;
                        json.Indentation = 2;
                        json.IndentChar  = ' ';
                    }
                    json.WriteStartObject();
                    foreach (var table in tables)
                    {
                        var normalizedTableName = options.Normalized(table.Name);
                        json.WritePropertyName(normalizedTableName);
                        json.WriteStartArray();
                        foreach (var row in table.Rows)
                        {
                            json.WriteStartObject();
                            foreach (var field in row.Fields)
                            {
                                var normalizedFieldName = options.Normalized(field.Name);
                                json.WritePropertyName(normalizedFieldName);
                                json.WriteValue(
                                    options.KeepList.Any(x => x.Key.Equals(normalizedTableName) &&
                                                         x.Value.Equals(normalizedFieldName))
                                    ? field.Value
                                    : options.CastNumber(field.Value)
                                    );
                            }
                            json.WriteEndObject();
                        }
                        json.WriteEndArray();
                    }
                    json.WriteEndObject();
                }

            return(0);
        }