回答編集履歴

2

fix script

2015/04/21 12:43

投稿

hello-world
hello-world

スコア1342

test CHANGED
@@ -104,7 +104,9 @@
104
104
 
105
105
  prefs_2 = prefs.map{ |k, v| [k, v.inject(:merge)] }.to_h
106
106
 
107
- puts "-- better structure"
107
+ puts "=== better structure"
108
+
109
+ puts "-- all data"
108
110
 
109
111
  p prefs_2
110
112
 
@@ -126,7 +128,11 @@
126
128
 
127
129
  pref_data = find_prefs2(mark['name'], prefs_2)
128
130
 
131
+ puts "-- found data"
132
+
129
133
  p pref_data
134
+
135
+ puts "-- ken"
130
136
 
131
137
  p pref_data['ken']
132
138
 
@@ -148,11 +154,17 @@
148
154
 
149
155
  nil
150
156
 
151
- -- better structure
157
+ === better structure
158
+
159
+ -- all data
152
160
 
153
161
  {"hokkaido"=>{"name"=>"函館朝市", "ken"=>"北海道", "zinkou"=>200000}}
154
162
 
163
+ -- found data
164
+
155
165
  {"name"=>"函館朝市", "ken"=>"北海道", "zinkou"=>200000}
166
+
167
+ -- ken
156
168
 
157
169
  "北海道"
158
170
 

1

スクリプトを追加

2015/04/21 12:43

投稿

hello-world
hello-world

スコア1342

test CHANGED
@@ -1 +1,159 @@
1
1
  hoge2.json の2つ以上のデータがある場合のJSONを教えてもらえますか?
2
+
3
+
4
+
5
+ ---
6
+
7
+
8
+
9
+ とりあえずこんな感じで。
10
+
11
+
12
+
13
+ スクリプト
14
+
15
+ ```lang-ruby
16
+
17
+ require 'json'
18
+
19
+
20
+
21
+ markers = JSON.parse <<-JSON
22
+
23
+ {
24
+
25
+ "marker":[
26
+
27
+ {"lat":41.772596,"lng":140.725261,"name":"函館朝市"},
28
+
29
+ {"lat":41.796864,"lng":140.756965,"name":"五稜郭"},
30
+
31
+ {"lat":41.772912,"lng":140.816231,"name":"函館空港"}
32
+
33
+ ]
34
+
35
+ }
36
+
37
+ JSON
38
+
39
+
40
+
41
+ prefs = JSON.parse <<-JSON
42
+
43
+ {
44
+
45
+ "hokkaido":[
46
+
47
+ {"name":"函館朝市"},
48
+
49
+ {"ken":"北海道"},
50
+
51
+ {"zinkou":200000}
52
+
53
+ ]
54
+
55
+ }
56
+
57
+ JSON
58
+
59
+
60
+
61
+ mark = markers['marker'][0]
62
+
63
+ puts "-- mark"
64
+
65
+ p mark
66
+
67
+
68
+
69
+ def find_prefs(name, prefs)
70
+
71
+ prefs.each do |label, values|
72
+
73
+ values.each do |a_hash|
74
+
75
+ a_hash.each do |k, v|
76
+
77
+ if k == 'name' && v == name
78
+
79
+ return { label => values }
80
+
81
+ end
82
+
83
+ end
84
+
85
+ end
86
+
87
+ end
88
+
89
+ nil
90
+
91
+ end
92
+
93
+
94
+
95
+ puts "-- search result"
96
+
97
+ p find_prefs(mark['name'], prefs)
98
+
99
+ p find_prefs('unknown', prefs)
100
+
101
+
102
+
103
+ # --------------------------------
104
+
105
+ prefs_2 = prefs.map{ |k, v| [k, v.inject(:merge)] }.to_h
106
+
107
+ puts "-- better structure"
108
+
109
+ p prefs_2
110
+
111
+
112
+
113
+ def find_prefs2(name, prefs_2)
114
+
115
+ prefs_2.each do |label, values|
116
+
117
+ return values if values['name'] == name
118
+
119
+ end
120
+
121
+ nil
122
+
123
+ end
124
+
125
+
126
+
127
+ pref_data = find_prefs2(mark['name'], prefs_2)
128
+
129
+ p pref_data
130
+
131
+ p pref_data['ken']
132
+
133
+ ```
134
+
135
+
136
+
137
+ 結果
138
+
139
+ ```
140
+
141
+ -- mark
142
+
143
+ {"lat"=>41.772596, "lng"=>140.725261, "name"=>"函館朝市"}
144
+
145
+ -- search result
146
+
147
+ {"hokkaido"=>[{"name"=>"函館朝市"}, {"ken"=>"北海道"}, {"zinkou"=>200000}]}
148
+
149
+ nil
150
+
151
+ -- better structure
152
+
153
+ {"hokkaido"=>{"name"=>"函館朝市", "ken"=>"北海道", "zinkou"=>200000}}
154
+
155
+ {"name"=>"函館朝市", "ken"=>"北海道", "zinkou"=>200000}
156
+
157
+ "北海道"
158
+
159
+ ```