json2csv 0.0.2 → 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gemspec +1 -1
- data/README.md +43 -6
- data/data/sample.json +1 -1
- data/lib/json2csv/cli/cmd/convert_cmd.rb +6 -2
- data/lib/json2csv/cli/convert/convert.rb +20 -4
- data/lib/json2csv/version.rb +1 -1
- metadata +1 -15
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 249febdf6137898ce7a43bd9f12ba1d7fbffd5d5
|
4
|
+
data.tar.gz: 8d606d373e79e91632d69236ba314481cf53347c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d67e8524e08b0182186b8b351fbe56ae6cdb83f4cfe73db0f19f576f82b658e9ada51d351e7c52e1e82c69cb4add5aa42cbb0063976c06aaed17ff954c8c44ca
|
7
|
+
data.tar.gz: 79499ae598cc5e21cca31a761171e13850f22faaf1203c510698f6847bb5f778258b63cd1f9d6fd5338889f428a29420a18b3609e82f9df2c980f861bd565423
|
data/.gemspec
CHANGED
@@ -31,7 +31,7 @@ Gem::Specification.new do |s|
|
|
31
31
|
|
32
32
|
s.add_development_dependency 'coveralls', '~> 0.7', '>= 0.7.0r'
|
33
33
|
s.add_development_dependency 'rspec', '~> 3.0', '>= 3.0.0'
|
34
|
-
s.add_development_dependency 'ruby-debug-ide' if RUBY_VERSION >= '2.1'
|
34
|
+
# s.add_development_dependency 'ruby-debug-ide' if RUBY_VERSION >= '2.1'
|
35
35
|
s.add_development_dependency 'rubocop', '~> 0.24', '>= 0.24.0'
|
36
36
|
s.add_development_dependency 'simplecov', '~> 0.8', '>= 0.8.2'
|
37
37
|
end
|
data/README.md
CHANGED
@@ -15,14 +15,51 @@ gem install json2csv
|
|
15
15
|
|
16
16
|
## Usage
|
17
17
|
|
18
|
+
**Simple conversion**
|
19
|
+
|
18
20
|
```
|
19
21
|
json2csv convert data/sample.json
|
22
|
+
|
23
|
+
```
|
24
|
+
|
25
|
+
**Global help**
|
26
|
+
|
27
|
+
```
|
28
|
+
json2csv help
|
29
|
+
NAME
|
30
|
+
json2csv - json2csv 0.0.3
|
31
|
+
|
32
|
+
SYNOPSIS
|
33
|
+
json2csv [global options] command [command options] [arguments...]
|
34
|
+
|
35
|
+
GLOBAL OPTIONS
|
36
|
+
--help - Show this message
|
37
|
+
|
38
|
+
COMMANDS
|
39
|
+
convert - Convert json file
|
40
|
+
help - Shows a list of commands or help for one command
|
41
|
+
version - Print version info
|
42
|
+
```
|
43
|
+
|
44
|
+
**Convert help**
|
45
|
+
|
46
|
+
```
|
47
|
+
json2csv help convert
|
48
|
+
NAME
|
49
|
+
convert - Convert json file
|
50
|
+
|
51
|
+
SYNOPSIS
|
52
|
+
json2csv [global options] convert [command options]
|
53
|
+
|
54
|
+
COMMAND OPTIONS
|
55
|
+
-d, --delimiter=arg - (default: ,)
|
56
|
+
-r, --root=arg - (default: none)
|
20
57
|
```
|
21
58
|
|
22
59
|
## Example
|
23
60
|
|
24
61
|
|
25
|
-
|
62
|
+
**Input json**
|
26
63
|
|
27
64
|
```
|
28
65
|
cat data/sample.json
|
@@ -47,14 +84,14 @@ cat data/sample.json
|
|
47
84
|
"Street": "#111 Sutter St, 94104",
|
48
85
|
"City": "San Francisco",
|
49
86
|
"Details": {
|
50
|
-
"note": "Korean
|
87
|
+
"note": "Korean Deli near to main entrance"
|
51
88
|
}
|
52
89
|
}
|
53
90
|
}
|
54
91
|
}
|
55
92
|
```
|
56
93
|
|
57
|
-
|
94
|
+
**Convert json**
|
58
95
|
|
59
96
|
```
|
60
97
|
./bin/json2csv convert data/sample.json
|
@@ -62,13 +99,13 @@ Converting data/sample.json
|
|
62
99
|
|
63
100
|
```
|
64
101
|
|
65
|
-
|
102
|
+
**Output json**
|
66
103
|
|
67
104
|
```
|
68
105
|
cat data/sample.json.csv
|
69
106
|
|
70
107
|
id,Firstname,Lastname,Address.Street,Address.City,Address.Details.note
|
71
108
|
12345,Joe,Doe,"#2140 Taylor Street, 94133",San Francisco,Pool available
|
72
|
-
45678,Jack,Plumber,"#111 Sutter St, 94104",San Francisco,Korean
|
109
|
+
45678,Jack,Plumber,"#111 Sutter St, 94104",San Francisco,Korean Deli near to main entrance
|
73
110
|
|
74
|
-
```
|
111
|
+
```
|
data/data/sample.json
CHANGED
@@ -9,10 +9,14 @@ require_relative '../convert/convert'
|
|
9
9
|
|
10
10
|
desc 'Convert json file'
|
11
11
|
command :convert do |c|
|
12
|
-
c.
|
12
|
+
c.flag [:r, :root], :type => String
|
13
|
+
c.flag [:d, :delimiter], :type => String, :default_value => ','
|
14
|
+
|
15
|
+
c.action do |global_options, options, args|
|
13
16
|
fail ArgumentError, 'No file to convert specified' if args.empty?
|
14
17
|
|
15
|
-
|
18
|
+
opts = {}.merge(global_options).merge(options)
|
19
|
+
Json2Csv::Convert.convert(args, opts)
|
16
20
|
end
|
17
21
|
end
|
18
22
|
|
@@ -10,15 +10,25 @@ require_relative '../../version'
|
|
10
10
|
module Json2Csv
|
11
11
|
# Apollon bootstrap module
|
12
12
|
module Convert
|
13
|
+
DEFAULT_OPTIONS = {
|
14
|
+
:out_path => 'out.txt',
|
15
|
+
:delimiter => ','
|
16
|
+
}
|
17
|
+
|
13
18
|
class << self
|
14
|
-
def convert(paths)
|
19
|
+
def convert(paths, opts = {})
|
15
20
|
paths = [paths] unless paths.is_a?(Array)
|
16
21
|
paths.each do |path|
|
17
22
|
puts "Converting #{path}"
|
18
23
|
|
19
24
|
json = load_file(path)
|
20
25
|
|
21
|
-
|
26
|
+
if(opts[:root])
|
27
|
+
json = json[opts[:root]]
|
28
|
+
end
|
29
|
+
|
30
|
+
real_opts =
|
31
|
+
process(json, DEFAULT_OPTIONS.merge(opts).merge(:out_path => "#{path}.csv"))
|
22
32
|
end
|
23
33
|
end
|
24
34
|
|
@@ -45,6 +55,7 @@ module Json2Csv
|
|
45
55
|
def get_value(obj, path)
|
46
56
|
segments = path.split('.')
|
47
57
|
segments.each do |segment|
|
58
|
+
return nil if obj.nil?
|
48
59
|
obj = obj[segment]
|
49
60
|
end
|
50
61
|
obj
|
@@ -68,13 +79,18 @@ module Json2Csv
|
|
68
79
|
File.open('error.txt', 'wt') { |f| f.write(e.to_s) }
|
69
80
|
end
|
70
81
|
|
71
|
-
def process(json,
|
82
|
+
def process(json, opts = DEFAULT_OPTIONS)
|
72
83
|
keys = json.keys
|
73
84
|
|
74
85
|
header = nil
|
75
86
|
|
87
|
+
out_path = opts[:out_path]
|
88
|
+
csv_opts = {
|
89
|
+
col_sep: opts[:delimiter] || DEFAULT_OPTIONS[:delimiter]
|
90
|
+
}
|
91
|
+
|
76
92
|
# Open the CSV for write
|
77
|
-
CSV.open(out_path, 'wt') do |csv|
|
93
|
+
CSV.open(out_path, 'wt', csv_opts) do |csv|
|
78
94
|
# Take each story - json['stories'][<ID_HERE>]
|
79
95
|
keys.each do |key|
|
80
96
|
obj = json[key]
|
data/lib/json2csv/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: json2csv
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tomas Korcak
|
@@ -138,20 +138,6 @@ dependencies:
|
|
138
138
|
- - ">="
|
139
139
|
- !ruby/object:Gem::Version
|
140
140
|
version: 3.0.0
|
141
|
-
- !ruby/object:Gem::Dependency
|
142
|
-
name: ruby-debug-ide
|
143
|
-
requirement: !ruby/object:Gem::Requirement
|
144
|
-
requirements:
|
145
|
-
- - ">="
|
146
|
-
- !ruby/object:Gem::Version
|
147
|
-
version: '0'
|
148
|
-
type: :development
|
149
|
-
prerelease: false
|
150
|
-
version_requirements: !ruby/object:Gem::Requirement
|
151
|
-
requirements:
|
152
|
-
- - ">="
|
153
|
-
- !ruby/object:Gem::Version
|
154
|
-
version: '0'
|
155
141
|
- !ruby/object:Gem::Dependency
|
156
142
|
name: rubocop
|
157
143
|
requirement: !ruby/object:Gem::Requirement
|