rakuten_web_service 1.9.2 → 1.10.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.codeclimate.yml +6 -9
- data/.travis.yml +6 -6
- data/CHANGELOG.md +12 -0
- data/Gemfile +0 -1
- data/README.md +14 -12
- data/examples/travel_apis.rb +19 -0
- data/lib/rakuten_web_service.rb +1 -0
- data/lib/rakuten_web_service/resource.rb +7 -9
- data/lib/rakuten_web_service/search_result.rb +5 -1
- data/lib/rakuten_web_service/travel.rb +2 -0
- data/lib/rakuten_web_service/travel/area_class.rb +128 -0
- data/lib/rakuten_web_service/travel/hotel.rb +28 -0
- data/lib/rakuten_web_service/travel/open_struct.rb +19 -0
- data/lib/rakuten_web_service/travel/resource.rb +12 -0
- data/lib/rakuten_web_service/travel/search_result.rb +34 -0
- data/lib/rakuten_web_service/version.rb +1 -1
- data/rakuten_web_service.gemspec +2 -2
- data/spec/fixtures/travel/area_class.json +1 -0
- data/spec/fixtures/travel/simple_hotel_search.json +1 -0
- data/spec/rakuten_web_service/travel/area_class_spec.rb +117 -0
- data/spec/rakuten_web_service/travel/open_struct_spec.rb +53 -0
- data/spec/rakuten_web_service/travel/search_result_spec.rb +71 -0
- data/spec/rakuten_web_service/travel/simple_hotel_search_spec.rb +65 -0
- metadata +27 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 415917a50517faaba6319b58c399fa8b52685d3116725e32152592a87f6e89ea
|
4
|
+
data.tar.gz: c6fd00ef38214d6008dd2db3417dccf066cdf4ae1f1243a9249413e4d3dac1e0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 070ae2ea7f6ca3c0877d4ec36d4f13012ba0c7b990dfd4591694d5e278f83352be927966e91714378da1140b8538eadcdcf9e8b1ebfc8aefb32456849f397780
|
7
|
+
data.tar.gz: 7911a4ca4d7927477e683290948316e49290de31cc7fd02380437564f38ebbe7af3c05d47b92316e5fb91e5ff3f0488ad6f4d71d1dfbfd2c5ae2f08b7145928f
|
data/.codeclimate.yml
CHANGED
@@ -1,4 +1,5 @@
|
|
1
|
-
|
1
|
+
version: "2"
|
2
|
+
plugins:
|
2
3
|
rubocop:
|
3
4
|
enabled: true
|
4
5
|
duplication:
|
@@ -6,11 +7,7 @@ engines:
|
|
6
7
|
config:
|
7
8
|
languages:
|
8
9
|
- ruby
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
exclude_paths:
|
15
|
-
- spec/**/*
|
16
|
-
- examples/*.rb
|
10
|
+
exclude_patterns:
|
11
|
+
- "bin/"
|
12
|
+
- "spec/"
|
13
|
+
- "examples/"
|
data/.travis.yml
CHANGED
@@ -15,13 +15,18 @@ group: travis_lts
|
|
15
15
|
cache: bundler
|
16
16
|
|
17
17
|
before_install:
|
18
|
+
- curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
|
19
|
+
- chmod +x ./cc-test-reporter
|
20
|
+
- ./cc-test-reporter before-build
|
18
21
|
- gem install bundler
|
19
22
|
|
20
23
|
bundler_args: --without vscode
|
21
24
|
|
22
25
|
script:
|
23
26
|
- bundle exec rake
|
24
|
-
|
27
|
+
|
28
|
+
after_script:
|
29
|
+
- ./cc-test-reporter after-build --exit-code $TRAVIS_TEST_RESULT
|
25
30
|
|
26
31
|
matrix:
|
27
32
|
allow_failures:
|
@@ -34,11 +39,6 @@ matrix:
|
|
34
39
|
- rvm: ruby-head
|
35
40
|
env: INTEGRATION=yes
|
36
41
|
|
37
|
-
addons:
|
38
|
-
code_climate:
|
39
|
-
repo_token:
|
40
|
-
secure: Z23O936LoCDGJ/OyYsLzxTUI+CMWyrfeN1PtQdCNMdF4vxwaCsAHr3ulTdudGhKMrVZGENSEK6fq0Xal3o3oPaH9aGM9sUQ/ibRM+J94Lx6Owu4okTsIHoEy4vFeW+A/62aiwxPcoi7PFrvC8FOfaZg+b+vvYAQcitVe6qwBHiE=
|
41
|
-
|
42
42
|
notifications:
|
43
43
|
email: false
|
44
44
|
webhooks:
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,15 @@
|
|
1
|
+
# v1.10.0
|
2
|
+
|
3
|
+
## Enhancements
|
4
|
+
|
5
|
+
* Starts Support of two Travel APIs: SimpleHotelSearch and GetAreaClass. [#91](https://github.com/rakuten-ws/rws-ruby-sdk/pull/91)
|
6
|
+
|
7
|
+
# v1.9.2 (2018/12/28)
|
8
|
+
|
9
|
+
## Enhancements
|
10
|
+
|
11
|
+
* Ruby 2.6 has been released :tada: this version joined the supported versions! [#100](https://github.com/rakuten-ws/rws-ruby-sdk/pull/100)
|
12
|
+
|
1
13
|
# v1.9.1 (2018/03/30)
|
2
14
|
|
3
15
|
## Improvements
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -8,7 +8,7 @@
|
|
8
8
|
|
9
9
|
This gem provides a client for easily accessing [Rakuten Web Service APIs](https://webservice.rakuten.co.jp/).
|
10
10
|
|
11
|
-
|
11
|
+
## Table of Contents
|
12
12
|
|
13
13
|
* [Prerequisite](#prerequisite)
|
14
14
|
* [Installation](#installation)
|
@@ -25,12 +25,12 @@ This gem provides a client for easily accessing [Rakuten Web Service APIs](https
|
|
25
25
|
* [Rakuten Kobo APIs](#rakuten-kobo-apis)
|
26
26
|
* [Rakuten Recipe APIs](#rakuten-recipe-apis)
|
27
27
|
* [Rakuten GORA APIs](#rakuten-gora-apis)
|
28
|
+
* [Rakuten Travel APIs](#rakuten-travel-apis)
|
28
29
|
* [Contributing](#contributing)
|
29
30
|
|
30
|
-
|
31
31
|
## Prerequisite
|
32
32
|
|
33
|
-
* Ruby 2.
|
33
|
+
* Ruby 2.3 or later
|
34
34
|
|
35
35
|
## Installation
|
36
36
|
|
@@ -42,19 +42,18 @@ Add this line to your application's Gemfile:
|
|
42
42
|
|
43
43
|
And then execute:
|
44
44
|
|
45
|
-
|
45
|
+
bundle
|
46
46
|
|
47
47
|
Or install it yourself as:
|
48
48
|
|
49
|
-
|
50
|
-
|
49
|
+
gem install rakuten_web_service
|
51
50
|
|
52
51
|
## Usage
|
53
52
|
|
54
53
|
### Prerequisite: Getting Application ID
|
55
54
|
|
56
|
-
You need to get Application ID for your application to access to Rakuten Web Service APIs.
|
57
|
-
If you have not got it, register your application [here](https://webservice.rakuten.co.jp/app/create).
|
55
|
+
You need to get Application ID for your application to access to Rakuten Web Service APIs.
|
56
|
+
If you have not got it, register your application [here](https://webservice.rakuten.co.jp/app/create).
|
58
57
|
|
59
58
|
### Configuration
|
60
59
|
|
@@ -70,8 +69,8 @@ At first, you have to specify your application's key. And you can tell the clien
|
|
70
69
|
# (Optional) Affiliate ID for your Rakuten account.
|
71
70
|
c.affiliate_id = 'YOUR_AFFILIATE_ID' # default: nil
|
72
71
|
|
73
|
-
# (Optional) # of retries to send requests when the client receives
|
74
|
-
# When the number of requests in some period overcomes the limit, the endpoints will return
|
72
|
+
# (Optional) # of retries to send requests when the client receives
|
73
|
+
# When the number of requests in some period overcomes the limit, the endpoints will return
|
75
74
|
# too many requests error. Then the client tries to retry to send the same request after a
|
76
75
|
# while.
|
77
76
|
c.max_retries = 3 # default: 5
|
@@ -88,7 +87,6 @@ Please note that you need to replace `'YOUR_APPLICATION_ID'` and `'YOUR_AFFILIAT
|
|
88
87
|
|
89
88
|
You can configure `application_id` and `affiliate_id` by defining environment variables `RWS_APPLICATION_ID` and `RWS_AFFILIATION_ID`.
|
90
89
|
|
91
|
-
|
92
90
|
### Search Ichiba Items
|
93
91
|
|
94
92
|
```ruby
|
@@ -139,7 +137,6 @@ Genre class provides an interface to traverse sub genres.
|
|
139
137
|
RakutenWebService::Ichiba::Genre[100316].name # => "水・ソフトドリンク"
|
140
138
|
```
|
141
139
|
|
142
|
-
|
143
140
|
### Ichiba Item Ranking
|
144
141
|
|
145
142
|
```ruby
|
@@ -194,6 +191,11 @@ Now rakuten\_web\_service is supporting the following APIs:
|
|
194
191
|
* [Rakuten GORA Golf Course Detail Search API](https://webservice.rakuten.co.jp/api/goragolfcoursedetail/)
|
195
192
|
* [Rakuten GORA Plan Search API](https://webservice.rakuten.co.jp/api/goraplansearch/)
|
196
193
|
|
194
|
+
### Rakuten Travel APIs
|
195
|
+
|
196
|
+
* [Rakuten Travel Simple Hotel API](https://webservice.rakuten.co.jp/api/simplehotelsearch/)
|
197
|
+
* [Rakuten Travel Get Area Class API](https://webservice.rakuten.co.jp/api/getareaclass/)
|
198
|
+
|
197
199
|
## Contributing
|
198
200
|
|
199
201
|
1. Fork it
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'rakuten_web_service'
|
2
|
+
|
3
|
+
application_id = ARGV.shift
|
4
|
+
|
5
|
+
RakutenWebService.configure do |c|
|
6
|
+
c.application_id = application_id
|
7
|
+
end
|
8
|
+
|
9
|
+
tokyo = RakutenWebService::Travel::AreaClass::SmallClass['tokyo']
|
10
|
+
|
11
|
+
nikotama = tokyo.children.find do |detail_area|
|
12
|
+
detail_area.class_name =~ /二子玉川/
|
13
|
+
end
|
14
|
+
|
15
|
+
puts "#{nikotama.class_code}: #{nikotama.class_name}"
|
16
|
+
|
17
|
+
nikotama.search(responseType: 'large').first(3).each do |hotel|
|
18
|
+
puts "#{hotel.basic_info['hotelName']} \n\t#{hotel.basic_info['address1']} #{hotel.basic_info['address2']}"
|
19
|
+
end
|
data/lib/rakuten_web_service.rb
CHANGED
@@ -21,19 +21,21 @@ module RakutenWebService
|
|
21
21
|
@@subclasses || []
|
22
22
|
end
|
23
23
|
|
24
|
-
def attribute(*
|
25
|
-
|
26
|
-
|
24
|
+
def attribute(*attribute_names)
|
25
|
+
attribute_names.each do |attribute_name|
|
26
|
+
attribute_name = attribute_name.to_s
|
27
|
+
method_name = attribute_name.to_snake
|
27
28
|
method_name = method_name.sub(/^#{resource_name}_(\w+)$/, '\1')
|
29
|
+
|
28
30
|
instance_eval do
|
29
31
|
define_method method_name do
|
30
|
-
get_attribute(
|
32
|
+
get_attribute(attribute_name)
|
31
33
|
end
|
32
34
|
end
|
33
35
|
next if method_name !~ /(.+)_flag$/
|
34
36
|
instance_eval do
|
35
37
|
define_method "#{$1}?" do
|
36
|
-
get_attribute(
|
38
|
+
get_attribute(attribute_name) == 1
|
37
39
|
end
|
38
40
|
end
|
39
41
|
end
|
@@ -63,10 +65,6 @@ module RakutenWebService
|
|
63
65
|
@endpoint = url || @endpoint
|
64
66
|
end
|
65
67
|
|
66
|
-
def client
|
67
|
-
@client ||= RakutenWebService::Client.new(endpoint)
|
68
|
-
end
|
69
|
-
|
70
68
|
def set_parser(&block)
|
71
69
|
instance_eval do
|
72
70
|
define_singleton_method :parse_response, block
|
@@ -17,7 +17,7 @@ module RakutenWebService
|
|
17
17
|
end
|
18
18
|
|
19
19
|
def search(params)
|
20
|
-
|
20
|
+
self.class.new(self.params.dup.merge!(params), @resource_class)
|
21
21
|
end
|
22
22
|
alias with search
|
23
23
|
|
@@ -37,6 +37,10 @@ module RakutenWebService
|
|
37
37
|
@params ||= {}
|
38
38
|
end
|
39
39
|
|
40
|
+
def params_to_get_next_page
|
41
|
+
@params.merge('page' => @response.body['page'] + 1)
|
42
|
+
end
|
43
|
+
|
40
44
|
def order(options)
|
41
45
|
new_params = params.dup
|
42
46
|
if options.is_a? Hash
|
@@ -0,0 +1,128 @@
|
|
1
|
+
require 'rakuten_web_service/travel/resource'
|
2
|
+
|
3
|
+
module RakutenWebService
|
4
|
+
module Travel
|
5
|
+
module AreaClass
|
6
|
+
def search(options={})
|
7
|
+
Base.search(options)
|
8
|
+
end
|
9
|
+
|
10
|
+
def [](class_code)
|
11
|
+
LargeClass[class_code] or
|
12
|
+
MiddleClass[class_code] or
|
13
|
+
SmallClass[class_code] or
|
14
|
+
DetailClass[class_code]
|
15
|
+
end
|
16
|
+
module_function :search, :[]
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
module RakutenWebService
|
22
|
+
module Travel
|
23
|
+
module AreaClass
|
24
|
+
class Base < RakutenWebService::Travel::Resource
|
25
|
+
endpoint 'https://app.rakuten.co.jp/services/api/Travel/GetAreaClass/20131024'
|
26
|
+
|
27
|
+
set_parser do |response|
|
28
|
+
response['areaClasses']['largeClasses'].map do |data|
|
29
|
+
LargeClass.new(data)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
class << self
|
34
|
+
def area_classes
|
35
|
+
@@area_classes ||= {}
|
36
|
+
end
|
37
|
+
|
38
|
+
def inherited(klass)
|
39
|
+
class_name = klass.to_s.split('::').last
|
40
|
+
area_level = class_name.to_s[/\A(\w*)Class\Z/, 1].downcase
|
41
|
+
class << klass
|
42
|
+
attr_reader :area_level
|
43
|
+
end
|
44
|
+
klass.instance_variable_set(:@area_level, area_level)
|
45
|
+
|
46
|
+
area_classes[klass.area_level] = klass
|
47
|
+
|
48
|
+
klass.attribute :"#{area_level}ClassCode", :"#{area_level}ClassName"
|
49
|
+
end
|
50
|
+
|
51
|
+
def [](area_code)
|
52
|
+
AreaClass.search.first unless repository[area_level][area_code]
|
53
|
+
repository[area_level][area_code]
|
54
|
+
end
|
55
|
+
|
56
|
+
def new(*args)
|
57
|
+
obj = super
|
58
|
+
repository[area_level][obj.class_code] = obj
|
59
|
+
obj
|
60
|
+
end
|
61
|
+
|
62
|
+
def repository
|
63
|
+
@@repository ||= Hash.new { |h, k| h[k] = {} }
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
attr_reader :parent, :children
|
68
|
+
|
69
|
+
def initialize(data, parent=nil)
|
70
|
+
@parent = parent
|
71
|
+
class_data = data
|
72
|
+
@params, @children = *(case class_data
|
73
|
+
when Array
|
74
|
+
class_data.first(2)
|
75
|
+
when Hash
|
76
|
+
[class_data, nil]
|
77
|
+
end)
|
78
|
+
|
79
|
+
if !(children.nil?) and !(children.empty?)
|
80
|
+
children_class = children.keys.map { |k| k[/\A(\w*)Classes\Z/, 1] }.first rescue data.tapp
|
81
|
+
@params["#{children_class}Classes"] = children["#{children_class}Classes"].map do |child_data|
|
82
|
+
Base.area_classes[children_class].new(child_data["#{children_class}Class"], self)
|
83
|
+
end
|
84
|
+
@children = @params["#{children_class}Classes"]
|
85
|
+
else
|
86
|
+
@children = []
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
def area_level
|
91
|
+
self.class.area_level
|
92
|
+
end
|
93
|
+
|
94
|
+
def class_code
|
95
|
+
self["#{area_level}ClassCode"]
|
96
|
+
end
|
97
|
+
|
98
|
+
def class_name
|
99
|
+
self["#{area_level}ClassName"]
|
100
|
+
end
|
101
|
+
|
102
|
+
def to_query
|
103
|
+
query = { "#{area_level}ClassCode" => class_code }
|
104
|
+
query = query.merge(parent.to_query) unless parent.nil?
|
105
|
+
query
|
106
|
+
end
|
107
|
+
|
108
|
+
def search(params={})
|
109
|
+
params = to_query.merge(params)
|
110
|
+
|
111
|
+
Hotel.search(params)
|
112
|
+
end
|
113
|
+
end
|
114
|
+
|
115
|
+
class LargeClass < Base
|
116
|
+
end
|
117
|
+
|
118
|
+
class MiddleClass < Base
|
119
|
+
end
|
120
|
+
|
121
|
+
class SmallClass < Base
|
122
|
+
end
|
123
|
+
|
124
|
+
class DetailClass < Base
|
125
|
+
end
|
126
|
+
end
|
127
|
+
end
|
128
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require 'rakuten_web_service/travel/resource'
|
2
|
+
|
3
|
+
module RakutenWebService
|
4
|
+
module Travel
|
5
|
+
class Hotel < RakutenWebService::Travel::Resource
|
6
|
+
endpoint 'https://app.rakuten.co.jp/services/api/Travel/SimpleHotelSearch/20170426'
|
7
|
+
|
8
|
+
set_parser do |response|
|
9
|
+
response['hotels'].map do |hotel_info|
|
10
|
+
Hotel.new(hotel_info)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
def initialize(params)
|
15
|
+
@params = {}
|
16
|
+
self.class.attribute_names.each_with_index do |key, i|
|
17
|
+
@params[key] = params[i][key] if params[i]
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def self.attribute_names
|
22
|
+
%w(hotelBasicInfo hotelRatingInfo hotelDetailInfo hotelFacilitiesInfo hotelPolicyInfo hotelOtherInfo)
|
23
|
+
end
|
24
|
+
|
25
|
+
attribute *attribute_names
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module RakutenWebService
|
2
|
+
module Travel
|
3
|
+
class OpenStruct
|
4
|
+
using RakutenWebService::StringSupport
|
5
|
+
|
6
|
+
def initialize(hash)
|
7
|
+
@table = {}
|
8
|
+
hash.each do |(key, val)|
|
9
|
+
val = self.class.new(val) if val.is_a?(Hash)
|
10
|
+
val = val.map { |v| self.class.new(v) } if val.is_a?(Array)
|
11
|
+
name = key.to_sym
|
12
|
+
@table[name] = val
|
13
|
+
define_singleton_method(name) { @table[name] }
|
14
|
+
define_singleton_method(name.to_s.to_snake) { @table[name] }
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
require 'rakuten_web_service/resource'
|
2
|
+
require 'rakuten_web_service/travel/search_result'
|
3
|
+
|
4
|
+
module RakutenWebService
|
5
|
+
module Travel
|
6
|
+
class Resource < RakutenWebService::Resource
|
7
|
+
def self.search(options)
|
8
|
+
RakutenWebService::Travel::SearchResult.new(options, self)
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
require 'rakuten_web_service/search_result'
|
2
|
+
|
3
|
+
module RakutenWebService
|
4
|
+
module Travel
|
5
|
+
class SearchResult < RakutenWebService::SearchResult
|
6
|
+
def params_to_get_next_page
|
7
|
+
@params.merge('page' => (paging_info['page'] + 1))
|
8
|
+
end
|
9
|
+
|
10
|
+
using RakutenWebService::StringSupport
|
11
|
+
|
12
|
+
%w[page pageCount recordCount].each do |name|
|
13
|
+
method_name = name.to_snake
|
14
|
+
define_method method_name do
|
15
|
+
paging_info[name]
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def has_next_page?
|
20
|
+
(page < page_count)
|
21
|
+
end
|
22
|
+
|
23
|
+
def next_page
|
24
|
+
search(params_to_get_next_page)
|
25
|
+
end
|
26
|
+
|
27
|
+
private
|
28
|
+
|
29
|
+
def paging_info
|
30
|
+
response['pagingInfo']
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
data/rakuten_web_service.gemspec
CHANGED
@@ -17,9 +17,9 @@ Gem::Specification.new do |spec|
|
|
17
17
|
spec.require_paths = ['lib']
|
18
18
|
spec.required_ruby_version = '>= 2.3.0'
|
19
19
|
|
20
|
-
spec.add_development_dependency 'bundler'
|
20
|
+
spec.add_development_dependency 'bundler'
|
21
21
|
spec.add_development_dependency 'rake', '~> 12.3.0'
|
22
|
-
spec.add_development_dependency 'rspec', '~> 3.
|
22
|
+
spec.add_development_dependency 'rspec', '~> 3.8.0'
|
23
23
|
spec.add_development_dependency 'tapp', '~> 1.5.1'
|
24
24
|
spec.add_development_dependency 'terminal-table', '~> 1.8.0'
|
25
25
|
spec.add_development_dependency 'webmock', '~> 3.5.0'
|
@@ -0,0 +1 @@
|
|
1
|
+
{"areaClasses":{"largeClasses":[[{"largeClassCode":"japan","largeClassName":"日本"},{"middleClasses":[{"middleClass":[{"middleClassCode":"hokkaido","middleClassName":"北海道"},{"smallClasses":[{"smallClass":[{"smallClassCode":"sapporo","smallClassName":"札幌"},{"detailClasses":[{"detailClass":{"detailClassCode":"A","detailClassName":"札幌・新札幌・琴似"}},{"detailClass":{"detailClassCode":"B","detailClassName":"大通公園・時計台・狸小路"}},{"detailClass":{"detailClassCode":"C","detailClassName":"すすきの・中島公園"}}]}]},{"smallClass":[{"smallClassCode":"jozankei","smallClassName":"定山渓"}]},{"smallClass":[{"smallClassCode":"wakkanai","smallClassName":"稚内・留萌・利尻・礼文"}]},{"smallClass":[{"smallClassCode":"abashiri","smallClassName":"網走・紋別・北見・知床"}]},{"smallClass":[{"smallClassCode":"kushiro","smallClassName":"釧路・阿寒・川湯・根室"}]},{"smallClass":[{"smallClassCode":"obihiro","smallClassName":"帯広・十勝"}]},{"smallClass":[{"smallClassCode":"hidaka","smallClassName":"日高・えりも"}]},{"smallClass":[{"smallClassCode":"furano","smallClassName":"富良野・美瑛・トマム"}]},{"smallClass":[{"smallClassCode":"asahikawa","smallClassName":"旭川・層雲峡・旭岳"}]},{"smallClass":[{"smallClassCode":"chitose","smallClassName":"千歳・支笏・苫小牧・滝川・夕張・空知"}]},{"smallClass":[{"smallClassCode":"otaru","smallClassName":"小樽・キロロ・積丹・余市"}]},{"smallClass":[{"smallClassCode":"niseko","smallClassName":"ルスツ・ニセコ・倶知安"}]},{"smallClass":[{"smallClassCode":"hakodate","smallClassName":"函館・湯の川・大沼・奥尻"}]},{"smallClass":[{"smallClassCode":"noboribetsu","smallClassName":"洞爺・室蘭・登別"}]}]}]},{"middleClass":[{"middleClassCode":"aomori","middleClassName":"青森県"},{"smallClasses":[{"smallClass":[{"smallClassCode":"aomori","smallClassName":"青森・浅虫温泉"}]},{"smallClass":[{"smallClassCode":"tsugaru","smallClassName":"津軽半島・五所川原"}]},{"smallClass":[{"smallClassCode":"ntsugaru","smallClassName":"白神山地・西津軽"}]},{"smallClass":[{"smallClassCode":"hirosaki","smallClassName":"弘前・黒石"}]},{"smallClass":[{"smallClassCode":"towadako","smallClassName":"八甲田・十和田湖・奥入瀬"}]},{"smallClass":[{"smallClassCode":"hachinohe","smallClassName":"八戸・三沢・七戸十和田"}]},{"smallClass":[{"smallClassCode":"shimokita","smallClassName":"下北・大間・むつ"}]}]}]},{"middleClass":[{"middleClassCode":"iwate","middleClassName":"岩手県"},{"smallClasses":[{"smallClass":[{"smallClassCode":"morioka","smallClassName":"盛岡"}]},{"smallClass":[{"smallClassCode":"shizukuishi","smallClassName":"雫石"}]},{"smallClass":[{"smallClassCode":"appi","smallClassName":"安比高原・八幡平・二戸"}]},{"smallClass":[{"smallClassCode":"kuji","smallClassName":"宮古・久慈・岩泉"}]},{"smallClass":[{"smallClassCode":"ofunato","smallClassName":"釜石・大船渡・陸前高田"}]},{"smallClass":[{"smallClassCode":"kitakami","smallClassName":"北上・花巻・遠野"}]},{"smallClass":[{"smallClassCode":"ichinoseki","smallClassName":"奥州・平泉・一関"}]}]}]},{"middleClass":[{"middleClassCode":"miyagi","middleClassName":"宮城県"},{"smallClasses":[{"smallClass":[{"smallClassCode":"sendai","smallClassName":"仙台・多賀城・名取"}]},{"smallClass":[{"smallClassCode":"akiu","smallClassName":"秋保・作並"}]},{"smallClass":[{"smallClassCode":"naruko","smallClassName":"鳴子・古川・くりこま高原"}]},{"smallClass":[{"smallClassCode":"matsushima","smallClassName":"松島・塩釜・石巻・南三陸・気仙沼"}]},{"smallClass":[{"smallClassCode":"shiroishi","smallClassName":"白石・宮城蔵王"}]}]}]},{"middleClass":[{"middleClassCode":"akita","middleClassName":"秋田県"},{"smallClasses":[{"smallClass":[{"smallClassCode":"akita","smallClassName":"秋田"}]},{"smallClass":[{"smallClassCode":"noshiro","smallClassName":"能代・男鹿・白神"}]},{"smallClass":[{"smallClassCode":"odate","smallClassName":"大館・鹿角・十和田大湯・八幡平"}]},{"smallClass":[{"smallClassCode":"tazawa","smallClassName":"角館・大曲・田沢湖"}]},{"smallClass":[{"smallClassCode":"yuzawa","smallClassName":"湯沢・横手"}]},{"smallClass":[{"smallClassCode":"honjo","smallClassName":"由利本荘・鳥海山"}]}]}]},{"middleClass":[{"middleClassCode":"yamagata","middleClassName":"山形県"},{"smallClasses":[{"smallClass":[{"smallClassCode":"yamagata","smallClassName":"山形・蔵王・天童・上山"}]},{"smallClass":[{"smallClassCode":"yonezawa","smallClassName":"米沢・赤湯・高畠・長井"}]},{"smallClass":[{"smallClassCode":"sagae","smallClassName":"寒河江・月山"}]},{"smallClass":[{"smallClassCode":"mogami","smallClassName":"尾花沢・新庄・村山"}]},{"smallClass":[{"smallClassCode":"shonai","smallClassName":"酒田・鶴岡・湯野浜・温海"}]}]}]},{"middleClass":[{"middleClassCode":"hukushima","middleClassName":"福島県"},{"smallClasses":[{"smallClass":[{"smallClassCode":"fukushima","smallClassName":"福島・二本松"}]},{"smallClass":[{"smallClassCode":"aizu","smallClassName":"会津若松・喜多方"}]},{"smallClass":[{"smallClassCode":"bandai","smallClassName":"猪苗代・表磐梯"}]},{"smallClass":[{"smallClassCode":"urabandai","smallClassName":"磐梯高原・裏磐梯"}]},{"smallClass":[{"smallClassCode":"koriyama","smallClassName":"郡山・磐梯熱海"}]},{"smallClass":[{"smallClassCode":"minami","smallClassName":"南会津・下郷・只見・檜枝岐"}]},{"smallClass":[{"smallClassCode":"nakadori","smallClassName":"白河・須賀川"}]},{"smallClass":[{"smallClassCode":"hamadori","smallClassName":"いわき・南相馬・相馬"}]}]}]},{"middleClass":[{"middleClassCode":"ibaragi","middleClassName":"茨城県"},{"smallClasses":[{"smallClass":[{"smallClassCode":"mito","smallClassName":"水戸・笠間"}]},{"smallClass":[{"smallClassCode":"oarai","smallClassName":"大洗・ひたちなか"}]},{"smallClass":[{"smallClassCode":"hitachi","smallClassName":"日立・北茨城・奥久慈"}]},{"smallClass":[{"smallClassCode":"tsukuba","smallClassName":"つくば・土浦・取手"}]},{"smallClass":[{"smallClassCode":"yuki","smallClassName":"古河・結城・筑西・常総"}]},{"smallClass":[{"smallClassCode":"kashima","smallClassName":"鹿嶋・神栖・潮来・北浦"}]}]}]},{"middleClass":[{"middleClassCode":"tochigi","middleClassName":"栃木県"},{"smallClasses":[{"smallClass":[{"smallClassCode":"utsunomiya","smallClassName":"宇都宮・さくら"}]},{"smallClass":[{"smallClassCode":"nikko","smallClassName":"日光・中禅寺湖・奥日光・今市"}]},{"smallClass":[{"smallClassCode":"kinugawa","smallClassName":"鬼怒川・川治・湯西川・川俣"}]},{"smallClass":[{"smallClassCode":"nasu","smallClassName":"那須・板室・黒磯"}]},{"smallClass":[{"smallClassCode":"shiobara","smallClassName":"塩原・矢板・大田原・西那須野"}]},{"smallClass":[{"smallClassCode":"mashiko","smallClassName":"真岡・益子・茂木"}]},{"smallClass":[{"smallClassCode":"koyama","smallClassName":"小山・足利・佐野・栃木"}]}]}]},{"middleClass":[{"middleClassCode":"gunma","middleClassName":"群馬県"},{"smallClasses":[{"smallClass":[{"smallClassCode":"maebashi","smallClassName":"前橋・赤城"}]},{"smallClass":[{"smallClassCode":"ikaho","smallClassName":"伊香保温泉・渋川"}]},{"smallClass":[{"smallClassCode":"manza","smallClassName":"万座・嬬恋・北軽井沢"}]},{"smallClass":[{"smallClassCode":"kusatsu","smallClassName":"草津温泉・白根"}]},{"smallClass":[{"smallClassCode":"shimaonsen","smallClassName":"四万温泉"}]},{"smallClass":[{"smallClassCode":"numata","smallClassName":"水上・猿ヶ京・沼田"}]},{"smallClass":[{"smallClassCode":"oze","smallClassName":"尾瀬・丸沼"}]},{"smallClass":[{"smallClassCode":"kiryu","smallClassName":"伊勢崎・太田・館林・桐生"}]},{"smallClass":[{"smallClassCode":"takasaki","smallClassName":"高崎"}]},{"smallClass":[{"smallClassCode":"fujioka","smallClassName":"富岡・藤岡・安中・磯部温泉"}]}]}]},{"middleClass":[{"middleClassCode":"saitama","middleClassName":"埼玉県"},{"smallClasses":[{"smallClass":[{"smallClassCode":"saitama","smallClassName":"大宮・浦和・川口・上尾"}]},{"smallClass":[{"smallClassCode":"kasukabe","smallClassName":"草加・越谷・春日部・羽生"}]},{"smallClass":[{"smallClassCode":"kumagaya","smallClassName":"熊谷・深谷・本庄"}]},{"smallClass":[{"smallClassCode":"kawagoe","smallClassName":"川越・東松山・志木・和光"}]},{"smallClass":[{"smallClassCode":"tokorozawa","smallClassName":"所沢・狭山・飯能"}]},{"smallClass":[{"smallClassCode":"chichibu","smallClassName":"秩父・長瀞"}]}]}]},{"middleClass":[{"middleClassCode":"tiba","middleClassName":"千葉県"},{"smallClasses":[{"smallClass":[{"smallClassCode":"chiba","smallClassName":"千葉"}]},{"smallClass":[{"smallClassCode":"keiyo","smallClassName":"舞浜・浦安・船橋・幕張"}]},{"smallClass":[{"smallClassCode":"kashiwa","smallClassName":"松戸・柏"}]},{"smallClass":[{"smallClassCode":"narita","smallClassName":"成田空港・佐倉"}]},{"smallClass":[{"smallClassCode":"choshi","smallClassName":"銚子・旭・九十九里・東金・茂原"}]},{"smallClass":[{"smallClassCode":"sotobo","smallClassName":"鴨川・勝浦・御宿・養老渓谷"}]},{"smallClass":[{"smallClassCode":"tateyama","smallClassName":"南房総・館山・白浜・千倉"}]},{"smallClass":[{"smallClassCode":"uchibo","smallClassName":"市原・木更津・君津・富津・鋸南"}]}]}]},{"middleClass":[{"middleClassCode":"tokyo","middleClassName":"東京都"},{"smallClasses":[{"smallClass":[{"smallClassCode":"tokyo","smallClassName":"東京23区内"},{"detailClasses":[{"detailClass":{"detailClassCode":"A","detailClassName":"東京駅・銀座・秋葉原・東陽町・葛西"}},{"detailClass":{"detailClassCode":"B","detailClassName":"新橋・汐留・浜松町・お台場"}},{"detailClass":{"detailClassCode":"C","detailClassName":"赤坂・六本木・霞ヶ関・永田町"}},{"detailClass":{"detailClassCode":"D","detailClassName":"渋谷・恵比寿・目黒・二子玉川"}},{"detailClass":{"detailClassCode":"E","detailClassName":"品川・大井町・蒲田・羽田空港"}},{"detailClass":{"detailClassCode":"F","detailClassName":"新宿・中野・荻窪・四谷"}},{"detailClass":{"detailClassCode":"G","detailClassName":"池袋・赤羽・巣鴨・大塚"}},{"detailClass":{"detailClassCode":"H","detailClassName":"東京ドーム・飯田橋・御茶ノ水"}},{"detailClass":{"detailClassCode":"I","detailClassName":"上野・浅草・錦糸町・新小岩・北千住"}}]}]},{"smallClass":[{"smallClassCode":"nishi","smallClassName":"立川・八王子・町田・府中・吉祥寺"}]},{"smallClass":[{"smallClassCode":"okutama","smallClassName":"奥多摩・青梅・羽村"}]},{"smallClass":[{"smallClassCode":"ritou","smallClassName":"八丈島"}]},{"smallClass":[{"smallClassCode":"oshima","smallClassName":"大島"}]},{"smallClass":[{"smallClassCode":"kouzu","smallClassName":"神津島・新島・式根島"}]},{"smallClass":[{"smallClassCode":"miyake","smallClassName":"三宅島"}]},{"smallClass":[{"smallClassCode":"Ogasawara","smallClassName":"小笠原諸島"}]}]}]},{"middleClass":[{"middleClassCode":"kanagawa","middleClassName":"神奈川県"},{"smallClasses":[{"smallClass":[{"smallClassCode":"yokohama","smallClassName":"横浜"}]},{"smallClass":[{"smallClassCode":"kawasaki","smallClassName":"川崎"}]},{"smallClass":[{"smallClassCode":"hakone","smallClassName":"箱根"}]},{"smallClass":[{"smallClassCode":"odawara","smallClassName":"小田原"}]},{"smallClass":[{"smallClassCode":"yugawara","smallClassName":"湯河原・真鶴"}]},{"smallClass":[{"smallClassCode":"sagamiko","smallClassName":"相模湖・丹沢"}]},{"smallClass":[{"smallClassCode":"sagamihara","smallClassName":"大和・相模原・町田西部"}]},{"smallClass":[{"smallClassCode":"ebina","smallClassName":"厚木・海老名・伊勢原"}]},{"smallClass":[{"smallClassCode":"shonan","smallClassName":"湘南・鎌倉・江ノ島・藤沢・平塚"}]},{"smallClass":[{"smallClassCode":"miura","smallClassName":"横須賀・三浦"}]}]}]},{"middleClass":[{"middleClassCode":"niigata","middleClassName":"新潟県"},{"smallClasses":[{"smallClass":[{"smallClassCode":"niigata","smallClassName":"新潟"}]},{"smallClass":[{"smallClassCode":"kaetsu","smallClassName":"月岡・瀬波・咲花"}]},{"smallClass":[{"smallClassCode":"kita","smallClassName":"長岡・燕三条・柏崎・弥彦・岩室・寺泊"}]},{"smallClass":[{"smallClassCode":"minami","smallClassName":"魚沼・十日町・津南・六日町・大湯"}]},{"smallClass":[{"smallClassCode":"yuzawa","smallClassName":"越後湯沢・苗場"}]},{"smallClass":[{"smallClassCode":"joetsu","smallClassName":"上越・糸魚川・妙高"}]},{"smallClass":[{"smallClassCode":"sado","smallClassName":"佐渡"}]}]}]},{"middleClass":[{"middleClassCode":"toyama","middleClassName":"富山県"},{"smallClasses":[{"smallClass":[{"smallClassCode":"toyama","smallClassName":"富山・八尾・立山"}]},{"smallClass":[{"smallClassCode":"goto","smallClassName":"滑川・魚津・朝日・黒部・宇奈月"}]},{"smallClass":[{"smallClassCode":"gosei","smallClassName":"高岡・氷見・砺波"}]}]}]},{"middleClass":[{"middleClassCode":"ishikawa","middleClassName":"石川県"},{"smallClasses":[{"smallClass":[{"smallClassCode":"kanazawa","smallClassName":"金沢"}]},{"smallClass":[{"smallClassCode":"kaga","smallClassName":"加賀・小松・辰口"}]},{"smallClass":[{"smallClassCode":"noto","smallClassName":"能登・輪島・珠洲"}]},{"smallClass":[{"smallClassCode":"nanao","smallClassName":"七尾・和倉・羽咋"}]}]}]},{"middleClass":[{"middleClassCode":"hukui","middleClassName":"福井県"},{"smallClasses":[{"smallClass":[{"smallClassCode":"hukui","smallClassName":"福井"}]},{"smallClass":[{"smallClassCode":"awara","smallClassName":"あわら・三国"}]},{"smallClass":[{"smallClassCode":"katsuyama","smallClassName":"永平寺・勝山・大野"}]},{"smallClass":[{"smallClassCode":"echizen","smallClassName":"越前・鯖江・武生"}]},{"smallClass":[{"smallClassCode":"tsuruga","smallClassName":"敦賀・美浜"}]},{"smallClass":[{"smallClassCode":"obama","smallClassName":"若狭・小浜・高浜"}]}]}]},{"middleClass":[{"middleClassCode":"yamanasi","middleClassName":"山梨県"},{"smallClasses":[{"smallClass":[{"smallClassCode":"kofu","smallClassName":"甲府・湯村・昇仙峡"}]},{"smallClass":[{"smallClassCode":"yamanashi","smallClassName":"山梨・石和・勝沼・塩山"}]},{"smallClass":[{"smallClassCode":"otsuki","smallClassName":"大月・都留・道志渓谷"}]},{"smallClass":[{"smallClassCode":"yamanakako","smallClassName":"山中湖・忍野"}]},{"smallClass":[{"smallClassCode":"kawaguchiko","smallClassName":"河口湖・富士吉田・本栖湖・西湖・精進湖"}]},{"smallClass":[{"smallClassCode":"minobu","smallClassName":"下部・身延・早川"}]},{"smallClass":[{"smallClassCode":"nirasaki","smallClassName":"韮崎・南アルプス"}]},{"smallClass":[{"smallClassCode":"kiyosato","smallClassName":"八ヶ岳・小淵沢・清里・大泉"}]}]}]},{"middleClass":[{"middleClassCode":"nagano","middleClassName":"長野県"},{"smallClasses":[{"smallClass":[{"smallClassCode":"nagano","smallClassName":"長野・小布施・信州高山・戸隠・飯綱"}]},{"smallClass":[{"smallClassCode":"madara","smallClassName":"斑尾・飯山・信濃町・野尻湖・黒姫"}]},{"smallClass":[{"smallClassCode":"nozawa","smallClassName":"野沢温泉・木島平・秋山郷"}]},{"smallClass":[{"smallClassCode":"shiga","smallClassName":"志賀高原・湯田中・渋"}]},{"smallClass":[{"smallClassCode":"ueda","smallClassName":"上田・別所・鹿教湯"}]},{"smallClass":[{"smallClassCode":"chikuma","smallClassName":"戸倉上山田・千曲"}]},{"smallClass":[{"smallClassCode":"sugadaira","smallClassName":"菅平・峰の原"}]},{"smallClass":[{"smallClassCode":"karui","smallClassName":"軽井沢・佐久・小諸"}]},{"smallClass":[{"smallClassCode":"yatsu","smallClassName":"八ヶ岳・野辺山・富士見・原村"}]},{"smallClass":[{"smallClassCode":"kirigamine","smallClassName":"蓼科・白樺湖・霧ヶ峰・車山"}]},{"smallClass":[{"smallClassCode":"suwa","smallClassName":"諏訪湖"}]},{"smallClass":[{"smallClassCode":"ina","smallClassName":"伊那・駒ヶ根・飯田・昼神"}]},{"smallClass":[{"smallClassCode":"kiso","smallClassName":"木曽"}]},{"smallClass":[{"smallClassCode":"matsumo","smallClassName":"松本・塩尻・浅間温泉・美ヶ原温泉"}]},{"smallClass":[{"smallClassCode":"kamiko","smallClassName":"上高地・乗鞍・白骨"}]},{"smallClass":[{"smallClassCode":"hotaka","smallClassName":"安曇野・穂高・大町・豊科"}]},{"smallClass":[{"smallClassCode":"hakuba","smallClassName":"白馬・八方尾根・栂池高原・小谷"}]}]}]},{"middleClass":[{"middleClassCode":"gihu","middleClassName":"岐阜県"},{"smallClasses":[{"smallClass":[{"smallClassCode":"gifu","smallClassName":"岐阜・各務原"}]},{"smallClass":[{"smallClassCode":"kamitakara","smallClassName":"奥飛騨・新穂高"}]},{"smallClass":[{"smallClassCode":"takayama","smallClassName":"高山・飛騨"}]},{"smallClass":[{"smallClassCode":"gero","smallClassName":"下呂温泉・濁河温泉"}]},{"smallClass":[{"smallClassCode":"tajimi","smallClassName":"中津川・多治見・恵那・美濃加茂"}]},{"smallClass":[{"smallClassCode":"gujo","smallClassName":"郡上八幡・関・美濃"}]},{"smallClass":[{"smallClassCode":"shirakawago","smallClassName":"白川郷"}]},{"smallClass":[{"smallClassCode":"ogaki","smallClassName":"大垣・岐阜羽島"}]}]}]},{"middleClass":[{"middleClassCode":"shizuoka","middleClassName":"静岡県"},{"smallClasses":[{"smallClass":[{"smallClassCode":"shizuoka","smallClassName":"静岡・清水"}]},{"smallClass":[{"smallClassCode":"atami","smallClassName":"熱海"}]},{"smallClass":[{"smallClassCode":"ito","smallClassName":"伊東"}]},{"smallClass":[{"smallClassCode":"izukogen","smallClassName":"伊豆高原"}]},{"smallClass":[{"smallClassCode":"higashi","smallClassName":"東伊豆・河津"}]},{"smallClass":[{"smallClassCode":"shimoda","smallClassName":"下田・南伊豆"}]},{"smallClass":[{"smallClassCode":"nishi","smallClassName":"西伊豆・戸田・土肥・堂ヶ島"}]},{"smallClass":[{"smallClassCode":"naka","smallClassName":"伊豆長岡・修善寺・天城湯ヶ島"}]},{"smallClass":[{"smallClassCode":"fuji","smallClassName":"富士・富士宮"}]},{"smallClass":[{"smallClassCode":"numazu","smallClassName":"御殿場・沼津・三島"}]},{"smallClass":[{"smallClassCode":"yaizu","smallClassName":"焼津・藤枝・御前崎・寸又峡"}]},{"smallClass":[{"smallClassCode":"hamamatsu","smallClassName":"浜松・浜名湖・天竜"}]},{"smallClass":[{"smallClassCode":"kikugawa","smallClassName":"掛川・袋井・磐田"}]}]}]},{"middleClass":[{"middleClassCode":"aichi","middleClassName":"愛知県"},{"smallClasses":[{"smallClass":[{"smallClassCode":"nagoyashi","smallClassName":"名古屋"},{"detailClasses":[{"detailClass":{"detailClassCode":"A","detailClassName":"名古屋駅・伏見・丸の内"}},{"detailClass":{"detailClassCode":"B","detailClassName":"栄・錦・名古屋城"}},{"detailClass":{"detailClassCode":"C","detailClassName":"金山・熱田・千種・ナゴヤドーム"}}]}]},{"smallClass":[{"smallClassCode":"mikawawan","smallClassName":"豊橋・豊川・蒲郡・伊良湖"}]},{"smallClass":[{"smallClassCode":"okumikawa","smallClassName":"奥三河・新城・湯谷温泉"}]},{"smallClass":[{"smallClassCode":"mikawa","smallClassName":"豊田・刈谷・知立・安城・岡崎"}]},{"smallClass":[{"smallClassCode":"owari","smallClassName":"一宮・犬山・小牧・瀬戸・春日井"}]},{"smallClass":[{"smallClassCode":"chita","smallClassName":"セントレア・東海・半田・知多"}]},{"smallClass":[{"smallClassCode":"minamichita","smallClassName":"南知多・日間賀島・篠島"}]}]}]},{"middleClass":[{"middleClassCode":"mie","middleClassName":"三重県"},{"smallClasses":[{"smallClass":[{"smallClassCode":"tsu","smallClassName":"津・鈴鹿・亀山"}]},{"smallClass":[{"smallClassCode":"yunoyama","smallClassName":"四日市・桑名・湯の山・長島温泉"}]},{"smallClass":[{"smallClassCode":"iga","smallClassName":"伊賀・名張"}]},{"smallClass":[{"smallClassCode":"matsusaka","smallClassName":"松阪"}]},{"smallClass":[{"smallClassCode":"ise","smallClassName":"伊勢・二見"}]},{"smallClass":[{"smallClassCode":"toba","smallClassName":"鳥羽"}]},{"smallClass":[{"smallClassCode":"shima","smallClassName":"志摩・賢島"}]},{"smallClass":[{"smallClassCode":"kumano","smallClassName":"熊野・尾鷲・紀北"}]}]}]},{"middleClass":[{"middleClassCode":"shiga","middleClassName":"滋賀県"},{"smallClasses":[{"smallClass":[{"smallClassCode":"ootsu","smallClassName":"大津・雄琴・草津・栗東"}]},{"smallClass":[{"smallClassCode":"kosei","smallClassName":"湖西・高島・マキノ"}]},{"smallClass":[{"smallClassCode":"kohoku","smallClassName":"長浜・米原"}]},{"smallClass":[{"smallClassCode":"kotou","smallClassName":"彦根・近江八幡・守山・東近江"}]},{"smallClass":[{"smallClassCode":"shigaraki","smallClassName":"信楽・甲賀"}]}]}]},{"middleClass":[{"middleClassCode":"kyoto","middleClassName":"京都府"},{"smallClasses":[{"smallClass":[{"smallClassCode":"shi","smallClassName":"京都"},{"detailClasses":[{"detailClass":{"detailClassCode":"D","detailClassName":"京都駅"}},{"detailClass":{"detailClassCode":"A","detailClassName":"嵐山・嵯峨野・太秦・高雄"}},{"detailClass":{"detailClassCode":"B","detailClassName":"河原町・四条烏丸・二条城・御所"}},{"detailClass":{"detailClassCode":"C","detailClassName":"祇園・東山・北白川"}},{"detailClass":{"detailClassCode":"E","detailClassName":"大原・鞍馬・貴船"}}]}]},{"smallClass":[{"smallClassCode":"nannbu","smallClassName":"宇治・長岡京"}]},{"smallClass":[{"smallClassCode":"yunohana","smallClassName":"亀岡・湯の花・美山・京丹波"}]},{"smallClass":[{"smallClassCode":"fukuchiyama","smallClassName":"福知山・綾部"}]},{"smallClass":[{"smallClassCode":"hokubu","smallClassName":"丹後・久美浜"}]},{"smallClass":[{"smallClassCode":"miyazu","smallClassName":"天橋立・宮津・舞鶴"}]}]}]},{"middleClass":[{"middleClassCode":"osaka","middleClassName":"大阪府"},{"smallClasses":[{"smallClass":[{"smallClassCode":"shi","smallClassName":"大阪"},{"detailClasses":[{"detailClass":{"detailClassCode":"B","detailClassName":"大阪駅・梅田・ユニバーサルシティ・尼崎"}},{"detailClass":{"detailClassCode":"D","detailClassName":"なんば・心斎橋・天王寺・阿倍野・長居"}},{"detailClass":{"detailClassCode":"C","detailClassName":"京橋・淀屋橋・本町・ベイエリア・弁天町"}},{"detailClass":{"detailClassCode":"A","detailClassName":"新大阪・江坂"}}]}]},{"smallClass":[{"smallClassCode":"hokubu","smallClassName":"高槻・茨木・箕面・伊丹空港"}]},{"smallClass":[{"smallClassCode":"toubu","smallClassName":"枚方・守口・東大阪"}]},{"smallClass":[{"smallClassCode":"nantou","smallClassName":"八尾・藤井寺・河内長野"}]},{"smallClass":[{"smallClassCode":"nanbu","smallClassName":"堺・岸和田・関空・泉佐野"}]}]}]},{"middleClass":[{"middleClassCode":"hyogo","middleClassName":"兵庫県"},{"smallClasses":[{"smallClass":[{"smallClassCode":"kobe","smallClassName":"神戸・有馬温泉・六甲山"}]},{"smallClass":[{"smallClassCode":"nantou","smallClassName":"宝塚・西宮・甲子園・三田・篠山"}]},{"smallClass":[{"smallClassCode":"minamichu","smallClassName":"明石・加古川・三木"}]},{"smallClass":[{"smallClassCode":"nannansei","smallClassName":"姫路・相生・赤穂"}]},{"smallClass":[{"smallClassCode":"chubu","smallClassName":"和田山・竹田城・ハチ高原"}]},{"smallClass":[{"smallClassCode":"kita","smallClassName":"城崎温泉・豊岡・出石・神鍋"}]},{"smallClass":[{"smallClassCode":"kasumi","smallClassName":"香住・浜坂・湯村"}]},{"smallClass":[{"smallClassCode":"awaji","smallClassName":"淡路島"}]}]}]},{"middleClass":[{"middleClassCode":"nara","middleClassName":"奈良県"},{"smallClasses":[{"smallClass":[{"smallClassCode":"nara","smallClassName":"奈良・大和高原"}]},{"smallClass":[{"smallClassCode":"hokubu","smallClassName":"橿原・大和郡山・天理・生駒"}]},{"smallClass":[{"smallClassCode":"nanbu","smallClassName":"吉野・十津川・天川・五條"}]}]}]},{"middleClass":[{"middleClassCode":"wakayama","middleClassName":"和歌山県"},{"smallClasses":[{"smallClass":[{"smallClassCode":"wakayama","smallClassName":"和歌山・加太・和歌浦"}]},{"smallClass":[{"smallClassCode":"Kihoku","smallClassName":"高野山・橋本"}]},{"smallClass":[{"smallClassCode":"gobo","smallClassName":"御坊・有田・海南・日高"}]},{"smallClass":[{"smallClassCode":"shirahama","smallClassName":"南紀白浜・紀伊田辺・龍神"}]},{"smallClass":[{"smallClassCode":"Katsuura","smallClassName":"勝浦・串本・すさみ"}]},{"smallClass":[{"smallClassCode":"hongu","smallClassName":"熊野古道・新宮・本宮・中辺路"}]}]}]},{"middleClass":[{"middleClassCode":"tottori","middleClassName":"鳥取県"},{"smallClasses":[{"smallClass":[{"smallClassCode":"tottori","smallClassName":"鳥取・岩美・浜村"}]},{"smallClass":[{"smallClassCode":"chubu","smallClassName":"倉吉・三朝温泉"}]},{"smallClass":[{"smallClassCode":"seibu","smallClassName":"米子・皆生温泉・大山"}]}]}]},{"middleClass":[{"middleClassCode":"simane","middleClassName":"島根県"},{"smallClasses":[{"smallClass":[{"smallClassCode":"matsue","smallClassName":"松江・玉造・安来・奥出雲"}]},{"smallClass":[{"smallClassCode":"toubu","smallClassName":"出雲・大田・石見銀山"}]},{"smallClass":[{"smallClassCode":"masuda","smallClassName":"津和野・益田・浜田・江津"}]},{"smallClass":[{"smallClassCode":"ritou","smallClassName":"隠岐諸島"}]}]}]},{"middleClass":[{"middleClassCode":"okayama","middleClassName":"岡山県"},{"smallClasses":[{"smallClass":[{"smallClassCode":"okayama","smallClassName":"岡山"}]},{"smallClass":[{"smallClassCode":"bizen","smallClassName":"牛窓・瀬戸内・備前"}]},{"smallClass":[{"smallClassCode":"tsuyama","smallClassName":"津山・湯郷・美作・奥津"}]},{"smallClass":[{"smallClassCode":"niimi","smallClassName":"湯原・蒜山・新見・高梁"}]},{"smallClass":[{"smallClassCode":"kurashiki","smallClassName":"倉敷・総社・玉野・笠岡"}]}]}]},{"middleClass":[{"middleClassCode":"hiroshima","middleClassName":"広島県"},{"smallClasses":[{"smallClass":[{"smallClassCode":"hiroshima","smallClassName":"広島"}]},{"smallClass":[{"smallClassCode":"higashihiroshima","smallClassName":"東広島・竹原・三原・広島空港"}]},{"smallClass":[{"smallClassCode":"fukuyama","smallClassName":"福山・尾道・しまなみ海道"}]},{"smallClass":[{"smallClassCode":"kure","smallClassName":"呉・江田島"}]},{"smallClass":[{"smallClassCode":"shohara","smallClassName":"三次・庄原・帝釈峡"}]},{"smallClass":[{"smallClassCode":"sandankyo","smallClassName":"三段峡・芸北・北広島"}]},{"smallClass":[{"smallClassCode":"miyajima","smallClassName":"宮島・宮浜温泉・廿日市"}]}]}]},{"middleClass":[{"middleClassCode":"yamaguchi","middleClassName":"山口県"},{"smallClasses":[{"smallClass":[{"smallClassCode":"yamaguchi","smallClassName":"山口・湯田温泉・防府"}]},{"smallClass":[{"smallClassCode":"shimonoseki","smallClassName":"下関・宇部"}]},{"smallClass":[{"smallClassCode":"iwakuni","smallClassName":"岩国・周南・柳井"}]},{"smallClass":[{"smallClassCode":"hagi","smallClassName":"萩・長門・秋吉台"}]}]}]},{"middleClass":[{"middleClassCode":"tokushima","middleClassName":"徳島県"},{"smallClasses":[{"smallClass":[{"smallClassCode":"tokushima","smallClassName":"徳島・鳴門"}]},{"smallClass":[{"smallClassCode":"hokubu","smallClassName":"大歩危・祖谷・剣山・吉野川"}]},{"smallClass":[{"smallClassCode":"nanbu","smallClassName":"阿南・日和佐・宍喰"}]}]}]},{"middleClass":[{"middleClassCode":"kagawa","middleClassName":"香川県"},{"smallClasses":[{"smallClass":[{"smallClassCode":"takamatsu","smallClassName":"高松・さぬき・東かがわ"}]},{"smallClass":[{"smallClassCode":"sakaide","smallClassName":"坂出・宇多津・丸亀"}]},{"smallClass":[{"smallClassCode":"kotohira","smallClassName":"琴平・観音寺"}]},{"smallClass":[{"smallClassCode":"ritou","smallClassName":"小豆島・直島"}]}]}]},{"middleClass":[{"middleClassCode":"ehime","middleClassName":"愛媛県"},{"smallClasses":[{"smallClass":[{"smallClassCode":"chuuyo","smallClassName":"松山・道後"}]},{"smallClass":[{"smallClassCode":"touyo","smallClassName":"今治・しまなみ海道"}]},{"smallClass":[{"smallClassCode":"saijo","smallClassName":"西条・新居浜・四国中央"}]},{"smallClass":[{"smallClassCode":"nanyo","smallClassName":"宇和島・八幡浜"}]}]}]},{"middleClass":[{"middleClassCode":"kouchi","middleClassName":"高知県"},{"smallClasses":[{"smallClass":[{"smallClassCode":"kouchi","smallClassName":"高知・南国・香南・伊野"}]},{"smallClass":[{"smallClassCode":"toubu","smallClassName":"安芸・室戸"}]},{"smallClass":[{"smallClassCode":"seibu","smallClassName":"足摺・四万十・宿毛・須崎"}]}]}]},{"middleClass":[{"middleClassCode":"hukuoka","middleClassName":"福岡県"},{"smallClasses":[{"smallClass":[{"smallClassCode":"fukuoka","smallClassName":"博多・キャナルシティ・海の中道・太宰府・二日市"}]},{"smallClass":[{"smallClassCode":"seibu","smallClassName":"天神・中洲・薬院・福岡ドーム・糸島"}]},{"smallClass":[{"smallClassCode":"kitakyusyu","smallClassName":"北九州"}]},{"smallClass":[{"smallClassCode":"chikuzen","smallClassName":"宗像・宮若・飯塚"}]},{"smallClass":[{"smallClassCode":"kurume","smallClassName":"久留米・甘木・原鶴温泉・筑後川温泉"}]},{"smallClass":[{"smallClassCode":"buzen","smallClassName":"北九州空港・苅田・行橋・豊前"}]},{"smallClass":[{"smallClassCode":"chikugo","smallClassName":"大牟田・柳川・八女・筑後"}]}]}]},{"middleClass":[{"middleClassCode":"saga","middleClassName":"佐賀県"},{"smallClasses":[{"smallClass":[{"smallClassCode":"saga","smallClassName":"佐賀・古湯温泉"}]},{"smallClass":[{"smallClassCode":"tosu","smallClassName":"鳥栖"}]},{"smallClass":[{"smallClassCode":"ureshino","smallClassName":"嬉野・武雄・伊万里・有田・太良"}]},{"smallClass":[{"smallClassCode":"karatsu","smallClassName":"唐津・呼子"}]}]}]},{"middleClass":[{"middleClassCode":"nagasaki","middleClassName":"長崎県"},{"smallClasses":[{"smallClass":[{"smallClassCode":"nagasaki","smallClassName":"長崎"}]},{"smallClass":[{"smallClassCode":"unzen","smallClassName":"雲仙・島原・小浜"}]},{"smallClass":[{"smallClassCode":"airport","smallClassName":"諫早・大村・長崎空港"}]},{"smallClass":[{"smallClassCode":"sasebo","smallClassName":"ハウステンボス・佐世保・平戸"}]},{"smallClass":[{"smallClassCode":"ritou","smallClassName":"五島列島"}]},{"smallClass":[{"smallClassCode":"tsushima","smallClassName":"対馬"}]},{"smallClass":[{"smallClassCode":"iki","smallClassName":"壱岐島"}]}]}]},{"middleClass":[{"middleClassCode":"kumamoto","middleClassName":"熊本県"},{"smallClasses":[{"smallClass":[{"smallClassCode":"kumamoto","smallClassName":"熊本"}]},{"smallClass":[{"smallClassCode":"kikuchi","smallClassName":"大津・玉名・山鹿・荒尾・菊池"}]},{"smallClass":[{"smallClassCode":"aso","smallClassName":"阿蘇"}]},{"smallClass":[{"smallClassCode":"yatsushiro","smallClassName":"宇土・八代・水俣"}]},{"smallClass":[{"smallClassCode":"kuma","smallClassName":"人吉・球磨"}]},{"smallClass":[{"smallClassCode":"amakusa","smallClassName":"天草・本渡"}]},{"smallClass":[{"smallClassCode":"kurokawa","smallClassName":"黒川温泉・杖立"}]}]}]},{"middleClass":[{"middleClassCode":"ooita","middleClassName":"大分県"},{"smallClasses":[{"smallClass":[{"smallClassCode":"oita","smallClassName":"大分"}]},{"smallClass":[{"smallClassCode":"beppu","smallClassName":"別府・日出"}]},{"smallClass":[{"smallClassCode":"usuki","smallClassName":"佐伯・臼杵・豊後大野"}]},{"smallClass":[{"smallClassCode":"yufuin","smallClassName":"湯布院・湯平"}]},{"smallClass":[{"smallClassCode":"taketa","smallClassName":"久住・竹田"}]},{"smallClass":[{"smallClassCode":"hita","smallClassName":"九重・日田・天瀬"}]},{"smallClass":[{"smallClassCode":"kunisaki","smallClassName":"国東・中津・宇佐・耶馬渓"}]}]}]},{"middleClass":[{"middleClassCode":"miyazaki","middleClassName":"宮崎県"},{"smallClasses":[{"smallClass":[{"smallClassCode":"miyazaki","smallClassName":"宮崎"}]},{"smallClass":[{"smallClassCode":"hokubu","smallClassName":"高千穂・延岡・日向・高鍋"}]},{"smallClass":[{"smallClassCode":"nanbu","smallClassName":"都城・えびの・日南・綾"}]}]}]},{"middleClass":[{"middleClassCode":"kagoshima","middleClassName":"鹿児島県"},{"smallClasses":[{"smallClass":[{"smallClassCode":"kagoshima","smallClassName":"鹿児島・桜島"}]},{"smallClass":[{"smallClassCode":"oosumi","smallClassName":"霧島・国分・鹿児島空港"}]},{"smallClass":[{"smallClassCode":"kanoya","smallClassName":"鹿屋・垂水・志布志"}]},{"smallClass":[{"smallClassCode":"hokusatsu","smallClassName":"川内・出水"}]},{"smallClass":[{"smallClassCode":"nansatsu","smallClassName":"指宿・枕崎・南さつま"}]},{"smallClass":[{"smallClassCode":"yakushima","smallClassName":"屋久島"}]},{"smallClass":[{"smallClassCode":"ritou","smallClassName":"種子島"}]},{"smallClass":[{"smallClassCode":"amami","smallClassName":"奄美大島・喜界島・徳之島"}]},{"smallClass":[{"smallClassCode":"okinoerabu","smallClassName":"沖永良部島・与論島"}]}]}]},{"middleClass":[{"middleClassCode":"okinawa","middleClassName":"沖縄県"},{"smallClasses":[{"smallClass":[{"smallClassCode":"nahashi","smallClassName":"那覇"}]},{"smallClass":[{"smallClassCode":"hokubu","smallClassName":"恩納・名護・本部・今帰仁"}]},{"smallClass":[{"smallClassCode":"chubu","smallClassName":"宜野湾・北谷・読谷・沖縄市・うるま"}]},{"smallClass":[{"smallClassCode":"nanbu","smallClassName":"糸満・豊見城・南城"}]},{"smallClass":[{"smallClassCode":"kerama","smallClassName":"慶良間・渡嘉敷・座間味・阿嘉"}]},{"smallClass":[{"smallClassCode":"kumejima","smallClassName":"久米島"}]},{"smallClass":[{"smallClassCode":"Miyako","smallClassName":"宮古島・伊良部島"}]},{"smallClass":[{"smallClassCode":"ritou","smallClassName":"石垣・西表・小浜島"}]},{"smallClass":[{"smallClassCode":"yonaguni","smallClassName":"与那国島"}]},{"smallClass":[{"smallClassCode":"daito","smallClassName":"大東島"}]}]}]}]}]]}}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"pagingInfo":{"recordCount":66,"pageCount":3,"page":1,"first":1,"last":30},"hotels":[[{"hotelBasicInfo":{"hotelNo":72781,"hotelName":"JRイン札幌","hotelInformationUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/dQ4dX/?f_no=72781","planListUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/cHNRi/?f_no=72781&f_flg=PLAN","dpPlanListUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/TDZXm/?noTomariHotel=72781","reviewUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/RmfmX/?f_hotel_no=72781","hotelKanaName":"じぇいあーるいんさっぽろ","hotelSpecial":"楽天トラベルゴールドアワード2017受賞!4年連続ゴールド受賞中♪","hotelMinCharge":3350,"latitude":155032.83,"longitude":508861.87,"postalCode":"060-0005","address1":"北海道","address2":"札幌市中央区北5条西6丁目1","telephoneNo":"011-233-3008","faxNo":"011-233-3566","access":"◆JR札幌駅から徒歩2分【西側出口より】 ◆高架下通路を通ればぬれずにホテルは目の前 ◆地下鉄・バス利用にも便利","parkingInformation":"先着順:チェックイン日15時〜チェックアウト日10時、1,200円/泊。JR55パーキング利用。","nearestStation":"札幌","hotelImageUrl":"https://img.travel.rakuten.co.jp/share/HOTEL/72781/72781.jpg","hotelThumbnailUrl":"https://img.travel.rakuten.co.jp/HIMG/90/72781.jpg","roomImageUrl":"https://img.travel.rakuten.co.jp/share/HOTEL/72781/72781_s.jpg","roomThumbnailUrl":"https://img.travel.rakuten.co.jp/HIMG/INTERIOR/72781.jpg","hotelMapImageUrl":"https://img.travel.rakuten.co.jp/share/HOTEL/72781/72781map.gif","reviewCount":3410,"reviewAverage":4.15,"userReview":"バリアフリールームに案内されたので、得した気分でした。もう少し清掃を頑張って欲しいかな? 2019-02-28 14:26:01投稿"}},{"hotelRatingInfo":{"serviceAverage":3.94,"locationAverage":4.49,"roomAverage":4.17,"equipmentAverage":3.82,"bathAverage":3.66,"mealAverage":3.33}}],[{"hotelBasicInfo":{"hotelNo":559,"hotelName":"センチュリーロイヤルホテル","hotelInformationUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/dQ4dX/?f_no=559","planListUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/cHNRi/?f_no=559&f_flg=PLAN","dpPlanListUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/TDZXm/?noTomariHotel=559","reviewUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/RmfmX/?f_hotel_no=559","hotelKanaName":"せんちゅりーろいやるほてる","hotelSpecial":"楽天トラベルアワード6年連続最高賞受賞・札幌駅徒歩2分のシティホテル/朝食高評価・全室Wi-Fi無料","hotelMinCharge":4500,"latitude":155031.28,"longitude":508867.18,"postalCode":"060-0005","address1":"北海道","address2":"札幌市中央区北5条西5丁目(札幌駅すぐ西隣り)【マップコード 9 522 638】","telephoneNo":"011-221-2121","faxNo":"011-231-2538","access":"JR・地下鉄「札幌駅」南口より徒歩2分。地下ショッピングセンターアピアのフードウォークを通って地下直結で雨の日も安心。","parkingInformation":"ご宿泊滞在中1泊1300円(14時〜11時)、地下3階駐車場と斜向いの提携駐車場がご利用頂けます。","nearestStation":"札幌","hotelImageUrl":"https://img.travel.rakuten.co.jp/share/HOTEL/559/559.jpg","hotelThumbnailUrl":"https://img.travel.rakuten.co.jp/HIMG/90/559.jpg","roomImageUrl":"https://img.travel.rakuten.co.jp/share/HOTEL/559/559_meal.jpg","roomThumbnailUrl":"https://img.travel.rakuten.co.jp/HIMG/INTERIOR/559.jpg","hotelMapImageUrl":"https://img.travel.rakuten.co.jp/share/HOTEL/559/559map.gif","reviewCount":4953,"reviewAverage":4.46,"userReview":"立地も良く朝食も◎ 2019-02-28 23:41:51投稿"}},{"hotelRatingInfo":{"serviceAverage":4.3,"locationAverage":4.77,"roomAverage":4.14,"equipmentAverage":4.27,"bathAverage":3.81,"mealAverage":4.7}}],[{"hotelBasicInfo":{"hotelNo":50125,"hotelName":"リッチモンドホテル札幌駅前","hotelInformationUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/dQ4dX/?f_no=50125","planListUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/cHNRi/?f_no=50125&f_flg=PLAN","dpPlanListUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/TDZXm/?noTomariHotel=50125","reviewUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/RmfmX/?f_hotel_no=50125","hotelKanaName":"りっちもんど さっぽろえきまえ","hotelSpecial":"◆楽天トラベルアワード4年連続受賞◆札幌駅徒歩7分。大通公園至近。札幌ドーム約30分。","hotelMinCharge":3300,"latitude":155025.36,"longitude":508889.32,"postalCode":"060-0003","address1":"北海道","address2":"札幌市中央区北3西1丁目1-7","telephoneNo":"011-218-8555","faxNo":"011-218-8556","access":"◆JR札幌駅南口より徒歩7分(地下鉄東豊線22番出口徒歩0分!荷物の多い方は23番出口がおすすめ)","parkingInformation":"有り 30台 1,000円(税込/泊) 要電話予約","nearestStation":"札幌","hotelImageUrl":"https://img.travel.rakuten.co.jp/share/HOTEL/50125/50125.jpg","hotelThumbnailUrl":"https://img.travel.rakuten.co.jp/HIMG/90/50125.jpg","roomImageUrl":"https://img.travel.rakuten.co.jp/share/HOTEL/50125/50125_tw.jpg","roomThumbnailUrl":"https://img.travel.rakuten.co.jp/HIMG/INTERIOR/50125.jpg","hotelMapImageUrl":"https://img.travel.rakuten.co.jp/share/HOTEL/50125/50125map.gif","reviewCount":3807,"reviewAverage":4.2,"userReview":"朝食が北海道らしいものが選べて良かったです。 2019-02-28 06:25:12投稿"}},{"hotelRatingInfo":{"serviceAverage":4.11,"locationAverage":4.28,"roomAverage":4.37,"equipmentAverage":4.05,"bathAverage":3.86,"mealAverage":3.84}}],[{"hotelBasicInfo":{"hotelNo":163,"hotelName":"ニューオータニイン札幌","hotelInformationUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/dQ4dX/?f_no=163","planListUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/cHNRi/?f_no=163&f_flg=PLAN","dpPlanListUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/TDZXm/?noTomariHotel=163","reviewUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/RmfmX/?f_hotel_no=163","hotelKanaName":"にゅーおーたにいんさっぽろ","hotelSpecial":"札幌駅と大通公園の中間に位置し、時計台や赤レンガも徒歩圏内。観光、ビジネスに最適","hotelMinCharge":4100,"latitude":155023.59,"longitude":508889.85,"postalCode":"060-0002","address1":"北海道","address2":"札幌市中央区北2条西1丁目1","telephoneNo":"011-222-1111","faxNo":"011-222-5521","access":"JR札幌駅徒歩8分。JR札幌駅より直結地下通路で地下鉄さっぽろ駅22番出口徒歩1分。新千歳空港よりバスで約70分。","parkingInformation":"有 70台 1泊(12時〜翌12時の24時間)\\1500 駐車券をフロントにご提示ください","nearestStation":"札幌","hotelImageUrl":"https://img.travel.rakuten.co.jp/share/HOTEL/163/163.jpg","hotelThumbnailUrl":"https://img.travel.rakuten.co.jp/HIMG/90/163.jpg","roomImageUrl":"https://img.travel.rakuten.co.jp/share/HOTEL/163/163_r.jpg","roomThumbnailUrl":"https://img.travel.rakuten.co.jp/HIMG/INTERIOR/163.jpg","hotelMapImageUrl":"https://img.travel.rakuten.co.jp/share/HOTEL/163/163map.gif","reviewCount":3894,"reviewAverage":4.17,"userReview":"設備は古いがきれいで 部屋も広かった 雪まつり期間で 大通りにも近いので よかった 北海道テレビにも近いのはよい 2019-03-01 19:46:55投稿"}},{"hotelRatingInfo":{"serviceAverage":4.01,"locationAverage":4.35,"roomAverage":4.23,"equipmentAverage":3.95,"bathAverage":3.79,"mealAverage":4.28}}],[{"hotelBasicInfo":{"hotelNo":56806,"hotelName":"ホテルルートイン 札幌駅前北口","hotelInformationUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/dQ4dX/?f_no=56806","planListUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/cHNRi/?f_no=56806&f_flg=PLAN","dpPlanListUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/TDZXm/?noTomariHotel=56806","reviewUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/RmfmX/?f_hotel_no=56806","hotelKanaName":"るーといん さっぽろえきまえきたぐち","hotelSpecial":"札幌駅北口より徒歩1分。定山渓・洞爺湖・旭川・日高方面はもちろん北海道観光の拠点として。","hotelMinCharge":5000,"latitude":155039.57,"longitude":508870.8,"postalCode":"060-0807","address1":"北海道","address2":"札幌市北区北7条西4-2-2","telephoneNo":"011-727-2111","faxNo":"011-727-2115","access":"JR札幌駅下車、北口より徒歩1分。新千歳空港からJR線快速列車で40分","parkingInformation":"ご到着順にてご案内。ご予約は承れません。1泊につき1000円/1台。ハイルーフタイプ用もございます。","nearestStation":"札幌","hotelImageUrl":"https://img.travel.rakuten.co.jp/share/HOTEL/56806/56806.jpg","hotelThumbnailUrl":"https://img.travel.rakuten.co.jp/HIMG/90/56806.jpg","roomImageUrl":null,"roomThumbnailUrl":null,"hotelMapImageUrl":"https://img.travel.rakuten.co.jp/share/HOTEL/56806/56806map.gif","reviewCount":2323,"reviewAverage":3.88,"userReview":"お風呂も朝食も良かったです。ただ、消臭スプレーの使い方がわかりませんでした。 2019-02-27 19:27:31投稿"}},{"hotelRatingInfo":{"serviceAverage":3.74,"locationAverage":4.68,"roomAverage":3.62,"equipmentAverage":3.62,"bathAverage":3.75,"mealAverage":3.81}}],[{"hotelBasicInfo":{"hotelNo":153500,"hotelName":"JRイン札幌駅南口","hotelInformationUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/dQ4dX/?f_no=153500","planListUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/cHNRi/?f_no=153500&f_flg=PLAN","dpPlanListUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/TDZXm/?noTomariHotel=153500","reviewUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/RmfmX/?f_hotel_no=153500","hotelKanaName":"じぇいあーるいんさっぽろえきみなみぐち","hotelSpecial":"2016年10月オープン!JR札幌駅徒歩7分!宿泊者専用ラウンジや大浴場も備えた快適設備のホテル","hotelMinCharge":3700,"latitude":155025.99,"longitude":508892.34,"postalCode":"060-0003","address1":"北海道","address2":"札幌市中央区北3条西1丁目10番","telephoneNo":"011-231-8111","faxNo":"011-231-8112","access":"地下鉄さっぽろ駅22番出口より徒歩1分/JR札幌駅より徒歩約7分","parkingInformation":"有り 30台 1,200円(税込み/泊) 要予約","nearestStation":"札幌","hotelImageUrl":"https://img.travel.rakuten.co.jp/share/HOTEL/153500/153500.jpg","hotelThumbnailUrl":"https://img.travel.rakuten.co.jp/HIMG/90/153500.jpg","roomImageUrl":null,"roomThumbnailUrl":null,"hotelMapImageUrl":"https://img.travel.rakuten.co.jp/share/HOTEL/153500/153500map.gif","reviewCount":387,"reviewAverage":4.21,"userReview":"地下鉄「東豊線」が近くて仕事上非常に都合が良かった。 2019-03-02 12:27:03投稿"}},{"hotelRatingInfo":{"serviceAverage":3.94,"locationAverage":4.13,"roomAverage":4.23,"equipmentAverage":4.09,"bathAverage":3.94,"mealAverage":3.64}}],[{"hotelBasicInfo":{"hotelNo":635,"hotelName":"ホテルグレイスリー札幌","hotelInformationUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/dQ4dX/?f_no=635","planListUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/cHNRi/?f_no=635&f_flg=PLAN","dpPlanListUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/TDZXm/?noTomariHotel=635","reviewUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/RmfmX/?f_hotel_no=635","hotelKanaName":"ぐれいすりーさっぽろ","hotelSpecial":"JR札幌駅より地下コンコースにて直結。徒歩1分とアクセス抜群 全室wi-fi接続無料","hotelMinCharge":3000,"latitude":155030.03,"longitude":508871.15,"postalCode":"060-0004","address1":"北海道","address2":"札幌市中央区北4条西4丁目","telephoneNo":"011-251-3211","faxNo":"011-241-8238","access":"札幌駅地下街(アピア・フードウォーク)より直結。JR札幌駅南口より徒歩1分とアクセス抜群。北海道読売新聞ビル7階","parkingInformation":"有料 (但し、オートバイは利用不可)","nearestStation":"札幌","hotelImageUrl":"https://img.travel.rakuten.co.jp/share/HOTEL/635/635.jpg","hotelThumbnailUrl":"https://img.travel.rakuten.co.jp/HIMG/90/635.jpg","roomImageUrl":"https://img.travel.rakuten.co.jp/share/HOTEL/635/635_heya.jpg","roomThumbnailUrl":"https://img.travel.rakuten.co.jp/HIMG/INTERIOR/635.jpg","hotelMapImageUrl":"https://img.travel.rakuten.co.jp/share/HOTEL/635/635map.gif","reviewCount":3475,"reviewAverage":4.3,"userReview":"4〜5回目だと思いますが、大変満足しています。できれば、ゴールデンウィーク・また来年の1月上旬に宿泊したいと思います 2019-02-26 16:46:28投稿"}},{"hotelRatingInfo":{"serviceAverage":4.1,"locationAverage":4.85,"roomAverage":4.08,"equipmentAverage":3.99,"bathAverage":3.65,"mealAverage":4.06}}],[{"hotelBasicInfo":{"hotelNo":147185,"hotelName":"アパホテル<TKP札幌駅前>","hotelInformationUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/dQ4dX/?f_no=147185","planListUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/cHNRi/?f_no=147185&f_flg=PLAN","dpPlanListUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/TDZXm/?noTomariHotel=147185","reviewUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/RmfmX/?f_hotel_no=147185","hotelKanaName":"あぱほてる<てぃーけーぴーさっぽろえきまえ>","hotelSpecial":"JR札幌駅前の好立地。約60種類の朝食バイキングが好評。","hotelMinCharge":3200,"latitude":155023.29,"longitude":508885.23,"postalCode":"060-0002","address1":"北海道","address2":"札幌市中央区北2条西2-19TKP札幌ビル6F","telephoneNo":"011-252-3167","faxNo":"011-798-7323","access":"JR札幌駅南口より徒歩5分。地下鉄「大通駅」より徒歩5分の好立地。札幌駅前通地下歩行空間3番出口徒歩2分","parkingInformation":"無し。近隣民間駐車場(有料)をご案内(詳しくはフロントまでお問合せ下さい。)","nearestStation":"札幌","hotelImageUrl":"https://img.travel.rakuten.co.jp/share/HOTEL/147185/147185.jpg","hotelThumbnailUrl":"https://img.travel.rakuten.co.jp/HIMG/90/147185.jpg","roomImageUrl":"https://img.travel.rakuten.co.jp/share/HOTEL/147185/147185_kan1.jpg","roomThumbnailUrl":"https://img.travel.rakuten.co.jp/HIMG/INTERIOR/147185.jpg","hotelMapImageUrl":"https://img.travel.rakuten.co.jp/share/HOTEL/147185/147185map.gif","reviewCount":572,"reviewAverage":3.46,"userReview":"朝食について花畑牧場コラボについて、期待外れ、北海道ならではのアパホテルの特徴が希薄になった気がします。 2019-02-25 07:42:45投稿"}},{"hotelRatingInfo":{"serviceAverage":3.29,"locationAverage":4.06,"roomAverage":3.28,"equipmentAverage":3.48,"bathAverage":2.98,"mealAverage":3.35}}],[{"hotelBasicInfo":{"hotelNo":67259,"hotelName":"クロスホテル札幌","hotelInformationUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/dQ4dX/?f_no=67259","planListUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/cHNRi/?f_no=67259&f_flg=PLAN","dpPlanListUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/TDZXm/?noTomariHotel=67259","reviewUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/RmfmX/?f_hotel_no=67259","hotelKanaName":"くろすほてるさっぽろ","hotelSpecial":"大通と札幌駅のほぼ中央に位置。 最上階に展望大浴場完備。展望ラウンジで夜景を眺めながら贅沢なひと時を","hotelMinCharge":5000,"latitude":155021.53,"longitude":508884.02,"postalCode":"060-0002","address1":"北海道","address2":"札幌市中央区北2条西2-23","telephoneNo":"011-272-0010","faxNo":"011-272-0020","access":"札幌駅・大通駅から徒歩5分。ビジネスにも観光にも便利な好立地。地下歩行空間3番出口より徒歩3分。","parkingInformation":"1泊1,500円(先着順・予約不可)※詳細情報のその他欄をご確認下さい。","nearestStation":"札幌","hotelImageUrl":"https://img.travel.rakuten.co.jp/share/HOTEL/67259/67259.jpg","hotelThumbnailUrl":"https://img.travel.rakuten.co.jp/HIMG/90/67259.jpg","roomImageUrl":"https://img.travel.rakuten.co.jp/share/HOTEL/67259/67259_sp.jpg","roomThumbnailUrl":"https://img.travel.rakuten.co.jp/HIMG/INTERIOR/67259.jpg","hotelMapImageUrl":"https://img.travel.rakuten.co.jp/share/HOTEL/67259/67259map.gif","reviewCount":1542,"reviewAverage":4.37,"userReview":"? 2019-02-24 17:42:02投稿"}},{"hotelRatingInfo":{"serviceAverage":4.38,"locationAverage":4.41,"roomAverage":4.41,"equipmentAverage":4.39,"bathAverage":4.18,"mealAverage":4.44}}],[{"hotelBasicInfo":{"hotelNo":724,"hotelName":"京王プラザホテル札幌","hotelInformationUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/dQ4dX/?f_no=724","planListUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/cHNRi/?f_no=724&f_flg=PLAN","dpPlanListUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/TDZXm/?noTomariHotel=724","reviewUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/RmfmX/?f_hotel_no=724","hotelKanaName":"けいおうぷらざほてる さっぽろ","hotelSpecial":"【札幌駅から徒歩約5分!】★北海道産食材を取り入れた和洋80種の朝食ブッフェは毎朝6時よりOPEN★","hotelMinCharge":4250,"latitude":155030.35,"longitude":508856.63,"postalCode":"060-0005","address1":"北海道","address2":"札幌市中央区北5条西7丁目","telephoneNo":"011-271-0111","faxNo":"011-221-5450","access":"【札幌駅】から徒歩5分。札幌駅西口からJR高架下アーケードを3ブロック直進。新千歳空港からホテル行きバス利用で約80分","parkingInformation":"【料金】1泊1台¥1500","nearestStation":"札幌","hotelImageUrl":"https://img.travel.rakuten.co.jp/share/HOTEL/724/724.jpg","hotelThumbnailUrl":"https://img.travel.rakuten.co.jp/HIMG/90/724.jpg","roomImageUrl":"https://img.travel.rakuten.co.jp/share/HOTEL/724/724_kyaku.jpg","roomThumbnailUrl":"https://img.travel.rakuten.co.jp/HIMG/INTERIOR/724.jpg","hotelMapImageUrl":"https://img.travel.rakuten.co.jp/share/HOTEL/724/724map.gif","reviewCount":4653,"reviewAverage":4.51,"userReview":"駅から近く歩いて行ける。チェックインは15時以降が正式だが、実際は13時に荷物を預けた際にチェックインできたので時間を有効に使えた。 2019-02-16 18:32:50投稿"}},{"hotelRatingInfo":{"serviceAverage":4.53,"locationAverage":4.3,"roomAverage":4.47,"equipmentAverage":4.3,"bathAverage":3.98,"mealAverage":4.33}}],[{"hotelBasicInfo":{"hotelNo":625,"hotelName":"ホテルマイステイズ札幌アスペン","hotelInformationUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/dQ4dX/?f_no=625","planListUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/cHNRi/?f_no=625&f_flg=PLAN","dpPlanListUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/TDZXm/?noTomariHotel=625","reviewUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/RmfmX/?f_hotel_no=625","hotelKanaName":"ほてるまいすていず さっぽろ あすぺん","hotelSpecial":"JR札幌駅北口前。清潔感に溢れ木の温もり漂う,優しく落ち着いた館内は女性のお客様からも好評です。","hotelMinCharge":3600,"latitude":155044.2,"longitude":508868.7,"postalCode":"060-0808","address1":"北海道","address2":"札幌市北区北8条西4丁目5番地","telephoneNo":"011-700-2111","faxNo":"011-700-2002","access":"■JR札幌駅より徒歩2分 ■地下鉄さっぽろ駅より徒歩5分 ■札幌駅前バスターミナルより徒歩5分","parkingInformation":"有50台(屋外・屋内)1泊1,500円(税込)先着順のため、予約不可とさせて頂きます。","nearestStation":"札幌","hotelImageUrl":"https://img.travel.rakuten.co.jp/share/HOTEL/625/625.jpg","hotelThumbnailUrl":"https://img.travel.rakuten.co.jp/HIMG/90/625.jpg","roomImageUrl":"https://img.travel.rakuten.co.jp/share/HOTEL/625/625_lo.jpg","roomThumbnailUrl":"https://img.travel.rakuten.co.jp/HIMG/INTERIOR/625.jpg","hotelMapImageUrl":"https://img.travel.rakuten.co.jp/share/HOTEL/625/625map.gif","reviewCount":2539,"reviewAverage":4.22,"userReview":"息子と二人で宿泊しました。駅から近く、ホテル内にコインランドリーもありとても助かりました。外国籍の方が多かったです。チェックアウト後も荷物も預かってください、次回もまた利用したいと思います。 2019-02-27 17:58:44投稿"}},{"hotelRatingInfo":{"serviceAverage":4,"locationAverage":4.62,"roomAverage":4.3,"equipmentAverage":3.84,"bathAverage":3.67,"mealAverage":4.17}}],[{"hotelBasicInfo":{"hotelNo":79254,"hotelName":"ホテル京阪 札幌","hotelInformationUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/dQ4dX/?f_no=79254","planListUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/cHNRi/?f_no=79254&f_flg=PLAN","dpPlanListUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/TDZXm/?noTomariHotel=79254","reviewUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/RmfmX/?f_hotel_no=79254","hotelKanaName":"ほてるけいはん さっぽろ","hotelSpecial":"大浴場で湯ったり♪全館Wi-Fi接続無料★全客室に加湿機能付空気清浄機完備!","hotelMinCharge":3360,"latitude":155034.94,"longitude":508859.5,"postalCode":"060-0806","address1":"北海道","address2":"札幌市北区北6条西6丁目1-9","telephoneNo":"011-758-0321","faxNo":"011-758-0987","access":"【新千歳空港からホテルまで約44分】JR「札幌」駅西改札口より徒歩約4分★詳しくはアクセスページをご覧ください。","parkingInformation":"有20台 有料 先着順 満車の際同料金にて提携駐車場ご案内(途中出庫不可)","nearestStation":"札幌","hotelImageUrl":"https://img.travel.rakuten.co.jp/share/HOTEL/79254/79254.jpg","hotelThumbnailUrl":"https://img.travel.rakuten.co.jp/HIMG/90/79254.jpg","roomImageUrl":"https://img.travel.rakuten.co.jp/share/HOTEL/79254/79254_ka.jpg","roomThumbnailUrl":"https://img.travel.rakuten.co.jp/HIMG/INTERIOR/79254.jpg","hotelMapImageUrl":"https://img.travel.rakuten.co.jp/share/HOTEL/79254/79254map.gif","reviewCount":2471,"reviewAverage":4.05,"userReview":"場所は駅から少し奥まったところにあり分かりやすいとは言えない。部屋は他のレビューであるようにベッドが面積の多くを占めていて広いとは言えないが、防音性は高く概ね満足しました。大浴場があるのは助かりました… 2019-02-23 19:39:09投稿 <a href=\"http://img.travel.rakuten.co.jp/image/tr/api/hs/RmfmX/?f_hotel_no=79254\" class=\"3click\">つづきはこちら<\/a>"}},{"hotelRatingInfo":{"serviceAverage":3.87,"locationAverage":4.28,"roomAverage":3.95,"equipmentAverage":3.89,"bathAverage":3.84,"mealAverage":3.95}}],[{"hotelBasicInfo":{"hotelNo":136840,"hotelName":"ホテルWBF札幌ノースゲート","hotelInformationUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/dQ4dX/?f_no=136840","planListUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/cHNRi/?f_no=136840&f_flg=PLAN","dpPlanListUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/TDZXm/?noTomariHotel=136840","reviewUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/RmfmX/?f_hotel_no=136840","hotelKanaName":"だぶるびーえふさっぽろのーすげーと","hotelSpecial":"JR札幌駅北口徒歩1分♪ネット環境万全!24時間カフェや!1Fにはローソンがあってとっても便利!","hotelMinCharge":2650,"latitude":155038.21,"longitude":508868.45,"postalCode":"060-0806","address1":"北海道","address2":"札幌市北区北6条西4丁目2-6","telephoneNo":"011-757-2001","faxNo":"011-757-2002","access":"JR札幌駅北口徒歩1分◆パセオ西口隣で雨の日も安心。ヨドバシカメラ目の前。札幌駅からは空港直通バス有","parkingInformation":"ホテル駐車場有1泊1500円(先着順・車高幅制限有・営業時間5時〜24時)※詳細はホテルへ要確認","nearestStation":"札幌","hotelImageUrl":"https://img.travel.rakuten.co.jp/share/HOTEL/136840/136840.jpg","hotelThumbnailUrl":"https://img.travel.rakuten.co.jp/HIMG/90/136840.jpg","roomImageUrl":"https://img.travel.rakuten.co.jp/share/HOTEL/136840/136840_kya.jpg","roomThumbnailUrl":"https://img.travel.rakuten.co.jp/HIMG/INTERIOR/136840.jpg","hotelMapImageUrl":"https://img.travel.rakuten.co.jp/share/HOTEL/136840/136840map.gif","reviewCount":1272,"reviewAverage":4.25,"userReview":"駅から近くて便利なので時々利用しています。今回は地震のためエレベーターが止まり復旧するまでロビーで待機を強いられる事になりました。そんな中毛布や充電器を貸して下さり大変有り難かったです。スタッフの皆様… 2019-02-24 01:15:07投稿 <a href=\"http://img.travel.rakuten.co.jp/image/tr/api/hs/RmfmX/?f_hotel_no=136840\" class=\"3click\">つづきはこちら<\/a>"}},{"hotelRatingInfo":{"serviceAverage":4.18,"locationAverage":4.8,"roomAverage":4.18,"equipmentAverage":3.98,"bathAverage":3.7,"mealAverage":4.09}}],[{"hotelBasicInfo":{"hotelNo":169,"hotelName":"ANAクラウンプラザホテル札幌","hotelInformationUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/dQ4dX/?f_no=169","planListUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/cHNRi/?f_no=169&f_flg=PLAN","dpPlanListUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/TDZXm/?noTomariHotel=169","reviewUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/RmfmX/?f_hotel_no=169","hotelKanaName":"えーえぬえーくらうんぷらざほてるさっぽろ","hotelSpecial":"JR札幌駅徒歩7分、札幌ドームへ一本/21番口経由で地下鉄東豊線乗車口徒歩3分、空港バス停車","hotelMinCharge":4267,"latitude":155028,"longitude":508891.49,"postalCode":"060-0003","address1":"北海道","address2":"札幌市中央区北3条西1丁目","telephoneNo":"011-221-4411","faxNo":"011-222-7624","access":"●札幌駅より徒歩7分/札幌駅直結の地下鉄東豊線さっぽろ駅21番出口(階段)・23番出口(エレベーター)より左、徒歩2分","parkingInformation":"79台収容。(1泊¥1,500/棟内地下駐車場:車高1.9m迄、敷地内屋外/国道5号線北方面沿い)","nearestStation":"札幌","hotelImageUrl":"https://img.travel.rakuten.co.jp/share/HOTEL/169/169.jpg","hotelThumbnailUrl":"https://img.travel.rakuten.co.jp/HIMG/90/169.jpg","roomImageUrl":"https://img.travel.rakuten.co.jp/share/HOTEL/169/169_room.jpg","roomThumbnailUrl":"https://img.travel.rakuten.co.jp/HIMG/INTERIOR/169.jpg","hotelMapImageUrl":"https://img.travel.rakuten.co.jp/share/HOTEL/169/169map.gif","reviewCount":3900,"reviewAverage":4.06,"userReview":"いつもお世話になります。今回も快適に過ごせました。今後ともよろしくお願いいたします。 2019-03-01 22:27:31投稿"}},{"hotelRatingInfo":{"serviceAverage":4.12,"locationAverage":4.31,"roomAverage":3.87,"equipmentAverage":3.91,"bathAverage":3.54,"mealAverage":4.03}}],[{"hotelBasicInfo":{"hotelNo":851,"hotelName":"ホテルクラビーサッポロ","hotelInformationUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/dQ4dX/?f_no=851","planListUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/cHNRi/?f_no=851&f_flg=PLAN","dpPlanListUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/TDZXm/?noTomariHotel=851","reviewUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/RmfmX/?f_hotel_no=851","hotelKanaName":"くらびー さっぽろ","hotelSpecial":"ブロンズアワード2018年受賞!全室洗い場付お風呂とゆったり空間が魅力のシティホテル。","hotelMinCharge":2160,"latitude":155025.16,"longitude":508912.2,"postalCode":"060-0032","address1":"北海道","address2":"札幌市中央区北2条東3丁目 サッポロファクトリー西館","telephoneNo":"011-242-1111","faxNo":"011-242-3339","access":"JR「札幌駅」からタクシーで5分。市営地下鉄東西線バスセンター前駅(T10番)より8番出口ファクトリー方面徒歩5分","parkingInformation":"車高155㎝以下はホテル立体駐車場、それ以上はサッポロファクトリー駐車場。ご一泊700円 予約不要","nearestStation":"札幌","hotelImageUrl":"https://img.travel.rakuten.co.jp/share/HOTEL/851/851.jpg","hotelThumbnailUrl":"https://img.travel.rakuten.co.jp/HIMG/90/851.jpg","roomImageUrl":"https://img.travel.rakuten.co.jp/share/HOTEL/851/851_heya1.jpg","roomThumbnailUrl":"https://img.travel.rakuten.co.jp/HIMG/INTERIOR/851.jpg","hotelMapImageUrl":"https://img.travel.rakuten.co.jp/share/HOTEL/851/851map.gif","reviewCount":2367,"reviewAverage":4.46,"userReview":"ホテルの場所としては駅から離れていますが、気に入っています。サッポロファクトリーに隣接しているのでちょっとした買い物や食事にも不便はありません。静かでゆったりしていてバスルーム使いやすくとても休まりま… 2019-03-01 10:26:07投稿 <a href=\"http://img.travel.rakuten.co.jp/image/tr/api/hs/RmfmX/?f_hotel_no=851\" class=\"3click\">つづきはこちら<\/a>"}},{"hotelRatingInfo":{"serviceAverage":4.42,"locationAverage":4.04,"roomAverage":4.5,"equipmentAverage":4.1,"bathAverage":4.34,"mealAverage":4.45}}],[{"hotelBasicInfo":{"hotelNo":7523,"hotelName":"ホテルモントレエーデルホフ札幌","hotelInformationUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/dQ4dX/?f_no=7523","planListUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/cHNRi/?f_no=7523&f_flg=PLAN","dpPlanListUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/TDZXm/?noTomariHotel=7523","reviewUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/RmfmX/?f_hotel_no=7523","hotelKanaName":"もんとれえーでるほふ さっぽろ","hotelSpecial":"JR札幌駅徒歩7分、地下鉄大通駅徒歩5分。全室16階以上の高層階にて禁煙ルームでご用意しております。","hotelMinCharge":4560,"latitude":155023.94,"longitude":508893.05,"postalCode":"060-0002","address1":"北海道","address2":"札幌市中央区北2条西1丁目","telephoneNo":"011-242-7111","faxNo":"011-232-1212","access":"JR札幌駅より徒歩7分、地下鉄大通駅より徒歩5分。大通駅31番・さっぽろ駅22番、21番(エスカレーター)が便利です。","parkingInformation":"地下1階・地下2階、1泊1,500円(税込) 満車の際は了承下さい。","nearestStation":"札幌","hotelImageUrl":"https://img.travel.rakuten.co.jp/share/HOTEL/7523/7523.jpg","hotelThumbnailUrl":"https://img.travel.rakuten.co.jp/HIMG/90/7523.jpg","roomImageUrl":"https://img.travel.rakuten.co.jp/share/HOTEL/7523/7523_sig.jpg","roomThumbnailUrl":"https://img.travel.rakuten.co.jp/HIMG/INTERIOR/7523.jpg","hotelMapImageUrl":"https://img.travel.rakuten.co.jp/share/HOTEL/7523/7523map.gif","reviewCount":3922,"reviewAverage":4.05,"userReview":"総合的に大変良かったですが、お風呂が大変混んでいて残念でした。露天風呂もありましたが狭かったです。でも楽天さんのプランは大変お安くまた宿泊予約しました。今度は角部屋プランにしました。楽しみです。今後も… 2019-02-25 11:44:24投稿 <a href=\"http://img.travel.rakuten.co.jp/image/tr/api/hs/RmfmX/?f_hotel_no=7523\" class=\"3click\">つづきはこちら<\/a>"}},{"hotelRatingInfo":{"serviceAverage":3.97,"locationAverage":3.9,"roomAverage":4.16,"equipmentAverage":3.97,"bathAverage":3.94,"mealAverage":3.98}}],[{"hotelBasicInfo":{"hotelNo":934,"hotelName":"アパホテル〈TKP札幌駅北口〉EXCELLENT","hotelInformationUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/dQ4dX/?f_no=934","planListUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/cHNRi/?f_no=934&f_flg=PLAN","dpPlanListUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/TDZXm/?noTomariHotel=934","reviewUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/RmfmX/?f_hotel_no=934","hotelKanaName":"あぱほてる てぃーけーぴーさっぽろきたぐち えくせれんと","hotelSpecial":"札幌駅北口徒歩5分、和洋朝食バイキングは種類豊富でボリューム満点、最上階には大浴場もございます。","hotelMinCharge":2850,"latitude":155053.07,"longitude":508873.12,"postalCode":"001-0010","address1":"北海道","address2":"札幌市北区北10条西3丁目7","telephoneNo":"011-756-7733","faxNo":"011-756-6661","access":"JR札幌駅(北口)より徒歩5分 地下鉄「北12条駅」徒歩3分。","parkingInformation":"有り 15台 1泊 1,080円(税込)","nearestStation":"北12条","hotelImageUrl":"https://img.travel.rakuten.co.jp/share/HOTEL/934/934.jpg","hotelThumbnailUrl":"https://img.travel.rakuten.co.jp/HIMG/90/934.jpg","roomImageUrl":"https://img.travel.rakuten.co.jp/share/HOTEL/934/934_r1.jpg","roomThumbnailUrl":"https://img.travel.rakuten.co.jp/HIMG/INTERIOR/934.jpg","hotelMapImageUrl":"https://img.travel.rakuten.co.jp/share/HOTEL/934/934map.gif","reviewCount":1266,"reviewAverage":3.99,"userReview":"部屋は広めで良かったですが少し臭いが気になりました。全体的にわるくはなかったです。 2019-03-02 23:40:51投稿"}},{"hotelRatingInfo":{"serviceAverage":3.81,"locationAverage":3.99,"roomAverage":3.88,"equipmentAverage":3.7,"bathAverage":3.72,"mealAverage":3.78}}],[{"hotelBasicInfo":{"hotelNo":17678,"hotelName":"シャトレーゼ ガトーキングダムサッポロ ホテル&スパリゾート","hotelInformationUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/dQ4dX/?f_no=17678","planListUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/cHNRi/?f_no=17678&f_flg=PLAN","dpPlanListUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/TDZXm/?noTomariHotel=17678","reviewUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/RmfmX/?f_hotel_no=17678","hotelKanaName":"しゃとれーぜ がとーきんぐだむさっぽろ ほてるあんどすぱりぞーと","hotelSpecial":"JR札幌駅から無料送迎バスを運行中!札幌のリゾートホテルでプール&温泉をお楽しみ下さい。","hotelMinCharge":5500,"latitude":155407.27,"longitude":508893.41,"postalCode":"002-8043","address1":"北海道","address2":"札幌市北区東茨戸132","telephoneNo":"011-773-2211","faxNo":"011-773-0758","access":"新千歳空港からお車で90分、JR札幌駅北口からご予約不要の無料送迎バスが毎日運行中(2015年6月1日よりダイヤ改正)","parkingInformation":"屋外・屋内あわせて2,000台駐車可能(無料)","nearestStation":"麻生","hotelImageUrl":"https://img.travel.rakuten.co.jp/share/HOTEL/17678/17678.jpg","hotelThumbnailUrl":"https://img.travel.rakuten.co.jp/HIMG/90/17678.jpg","roomImageUrl":"https://img.travel.rakuten.co.jp/share/HOTEL/17678/17678_r1.jpg","roomThumbnailUrl":"https://img.travel.rakuten.co.jp/HIMG/INTERIOR/17678.jpg","hotelMapImageUrl":"https://img.travel.rakuten.co.jp/share/HOTEL/17678/17678map.gif","reviewCount":967,"reviewAverage":4.23,"userReview":"朝食バイキングが美味しく種類も豊富でした!小さな子ども連れに優しいホテルでした。 2019-02-04 08:19:55投稿"}},{"hotelRatingInfo":{"serviceAverage":4.27,"locationAverage":3.76,"roomAverage":4.21,"equipmentAverage":4.09,"bathAverage":4,"mealAverage":4.08}}],[{"hotelBasicInfo":{"hotelNo":813,"hotelName":"新さっぽろアークシティホテル","hotelInformationUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/dQ4dX/?f_no=813","planListUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/cHNRi/?f_no=813&f_flg=PLAN","dpPlanListUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/TDZXm/?noTomariHotel=813","reviewUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/RmfmX/?f_hotel_no=813","hotelKanaName":"しんさっぽろあーくしてぃほてる","hotelSpecial":"新札幌駅(JR・地下鉄・バス)直結 ショッピングセンター・レストラン街もあり便利なコミュニティホテル","hotelMinCharge":4000,"latitude":154930.9,"longitude":509314.52,"postalCode":"004-0052","address1":"北海道","address2":"札幌市厚別区厚別中央2条5丁目6-2","telephoneNo":"011-890-2525","faxNo":"011-890-2520","access":"JR快速で新千歳空港より28分、札幌駅まで8分、地下鉄で大通駅まで19分","parkingInformation":"無料:ホテル専用はございません。ショッピングセンターと共用となります(予約不要)","nearestStation":"新札幌","hotelImageUrl":"https://img.travel.rakuten.co.jp/share/HOTEL/813/813.jpg","hotelThumbnailUrl":"https://img.travel.rakuten.co.jp/HIMG/90/813.jpg","roomImageUrl":"https://img.travel.rakuten.co.jp/share/HOTEL/813/813_dxt.jpg","roomThumbnailUrl":"https://img.travel.rakuten.co.jp/HIMG/INTERIOR/813.jpg","hotelMapImageUrl":"https://img.travel.rakuten.co.jp/share/HOTEL/813/813map.gif","reviewCount":1817,"reviewAverage":4.05,"userReview":"駅にほぼ直結しているので便利でした。 2019-03-02 23:42:04投稿"}},{"hotelRatingInfo":{"serviceAverage":3.87,"locationAverage":4.71,"roomAverage":3.92,"equipmentAverage":3.52,"bathAverage":3.28,"mealAverage":3.85}}],[{"hotelBasicInfo":{"hotelNo":4685,"hotelName":"ホテルパールシティ札幌","hotelInformationUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/dQ4dX/?f_no=4685","planListUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/cHNRi/?f_no=4685&f_flg=PLAN","dpPlanListUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/TDZXm/?noTomariHotel=4685","reviewUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/RmfmX/?f_hotel_no=4685","hotelKanaName":"ほてるぱーるしてぃさっぽろ","hotelSpecial":"無線LAN(Wi-Fi)全館対応","hotelMinCharge":1900,"latitude":155026.55,"longitude":508882.08,"postalCode":"060-0003","address1":"北海道","address2":"札幌市中央区北3条西2丁目","telephoneNo":"011-222-0511","faxNo":"011-222-0649","access":"JR札幌駅より徒歩4分、大通まで徒歩5分程と好立地!!コンビニもすぐです!","parkingInformation":"無し※近隣の駐車場(有料)をご紹介いたします。詳細はお問い合わせください。","nearestStation":"札幌","hotelImageUrl":"https://img.travel.rakuten.co.jp/share/HOTEL/4685/4685.jpg","hotelThumbnailUrl":"https://img.travel.rakuten.co.jp/HIMG/90/4685.jpg","roomImageUrl":"https://img.travel.rakuten.co.jp/share/HOTEL/4685/4685_sgl.jpg","roomThumbnailUrl":"https://img.travel.rakuten.co.jp/HIMG/INTERIOR/4685.jpg","hotelMapImageUrl":"https://img.travel.rakuten.co.jp/share/HOTEL/4685/4685map.gif","reviewCount":1745,"reviewAverage":3.77,"userReview":"ベッドが広々としていて良かったです。また、清潔感があって気持ちよく過ごせました。 2019-02-15 17:37:24投稿"}},{"hotelRatingInfo":{"serviceAverage":3.66,"locationAverage":4.56,"roomAverage":3.74,"equipmentAverage":3.28,"bathAverage":3.41,"mealAverage":3.33}}],[{"hotelBasicInfo":{"hotelNo":76941,"hotelName":"JRタワーホテル日航札幌","hotelInformationUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/dQ4dX/?f_no=76941","planListUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/cHNRi/?f_no=76941&f_flg=PLAN","dpPlanListUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/TDZXm/?noTomariHotel=76941","reviewUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/RmfmX/?f_hotel_no=76941","hotelKanaName":"じぇいあーるたわーほてる にっこうさっぽろ","hotelSpecial":"札幌駅と結ばれた便利さとリゾートのくつろぎ 美しい眺望に抱かれて、やすらぎと感動の時を","hotelMinCharge":11000,"latitude":155037.42,"longitude":508882.61,"postalCode":"060-0005","address1":"北海道","address2":"札幌市中央区北5条西2-5","telephoneNo":"011-251-2222","faxNo":"011-251-6370","access":"札幌駅直結","parkingInformation":"有り 500台 1200円(税込み/泊) 予約不要","nearestStation":"札幌","hotelImageUrl":"https://img.travel.rakuten.co.jp/share/HOTEL/76941/76941.jpg","hotelThumbnailUrl":"https://img.travel.rakuten.co.jp/HIMG/90/76941.jpg","roomImageUrl":"https://img.travel.rakuten.co.jp/share/HOTEL/76941/76941_s.jpg","roomThumbnailUrl":"https://img.travel.rakuten.co.jp/HIMG/INTERIOR/76941.jpg","hotelMapImageUrl":"https://img.travel.rakuten.co.jp/share/HOTEL/76941/76941map.gif","reviewCount":726,"reviewAverage":4.57,"userReview":"景色がとてもよく大満足な部屋でした。食事は朝食だけ頂いたのですが、とっても美味しく眺めもよく楽しかったです。 2019-02-21 18:55:01投稿"}},{"hotelRatingInfo":{"serviceAverage":4.49,"locationAverage":4.91,"roomAverage":4.6,"equipmentAverage":4.4,"bathAverage":4.18,"mealAverage":4.38}}],[{"hotelBasicInfo":{"hotelNo":142610,"hotelName":"ネストホテル札幌駅前","hotelInformationUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/dQ4dX/?f_no=142610","planListUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/cHNRi/?f_no=142610&f_flg=PLAN","dpPlanListUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/TDZXm/?noTomariHotel=142610","reviewUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/RmfmX/?f_hotel_no=142610","hotelKanaName":"ねすとほてるさっぽろえきまえ","hotelSpecial":"JR「札幌駅」南口より徒歩6分。大通り公園、札幌時計台もすぐそば。ビジネスや観光の拠点に最適。","hotelMinCharge":2150,"latitude":155021.76,"longitude":508887.25,"postalCode":"060-0002","address1":"北海道","address2":"札幌市中央区北二条西2-9","telephoneNo":"011-222-6611","faxNo":"011-222-6617","access":"JR「札幌駅」南口より徒歩6分","parkingInformation":"有 立体駐車場18台 1200円(税込/泊) 5ナンバー 車高160cm未満 先着順(予約不可)","nearestStation":"札幌","hotelImageUrl":"https://img.travel.rakuten.co.jp/share/HOTEL/142610/142610.jpg","hotelThumbnailUrl":"https://img.travel.rakuten.co.jp/HIMG/90/142610.jpg","roomImageUrl":null,"roomThumbnailUrl":null,"hotelMapImageUrl":"https://img.travel.rakuten.co.jp/share/HOTEL/142610/142610map.gif","reviewCount":579,"reviewAverage":3.77,"userReview":"いくらをおなかいっぱい食べるという長年の夢が叶って最高でした!フロントの方の対応も丁寧でとてもよかったです。札幌駅からの地下の道を通って出口から出たらすぐというのが他県民には分かりやすく良かったです。… 2019-03-01 16:14:03投稿 <a href=\"http://img.travel.rakuten.co.jp/image/tr/api/hs/RmfmX/?f_hotel_no=142610\" class=\"3click\">つづきはこちら<\/a>"}},{"hotelRatingInfo":{"serviceAverage":3.55,"locationAverage":3.93,"roomAverage":3.41,"equipmentAverage":3.5,"bathAverage":3.06,"mealAverage":4.33}}],[{"hotelBasicInfo":{"hotelNo":901,"hotelName":"ホテルエミシア札幌","hotelInformationUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/dQ4dX/?f_no=901","planListUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/cHNRi/?f_no=901&f_flg=PLAN","dpPlanListUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/TDZXm/?noTomariHotel=901","reviewUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/RmfmX/?f_hotel_no=901","hotelKanaName":"ほてるえみしあ さっぽろ","hotelSpecial":"JR「新札幌駅」、地下鉄「新さっぽろ駅」駅からすぐ!大浴場もある高層ホテルです。","hotelMinCharge":2700,"latitude":154936.75,"longitude":509317.16,"postalCode":"004-0052","address1":"北海道","address2":"札幌市厚別区厚別中央2条5丁目(新札幌駅前)","telephoneNo":"011-895-8811","faxNo":"011-895-8820","access":"JR「新札幌駅」改札口:徒歩3分。地下鉄東西線「新さっぽろ駅」:9番出口すぐ!車:札幌南IC・大谷地ICから約10分。","parkingInformation":"1,200円(チェックインからチェックアウトまで・予約不要)","nearestStation":"新札幌","hotelImageUrl":"https://img.travel.rakuten.co.jp/share/HOTEL/901/901.jpg","hotelThumbnailUrl":"https://img.travel.rakuten.co.jp/HIMG/90/901.jpg","roomImageUrl":"https://img.travel.rakuten.co.jp/share/HOTEL/901/901_room.jpg","roomThumbnailUrl":"https://img.travel.rakuten.co.jp/HIMG/INTERIOR/901.jpg","hotelMapImageUrl":"https://img.travel.rakuten.co.jp/share/HOTEL/901/901map.gif","reviewCount":1560,"reviewAverage":4.35,"userReview":"当日は、24階のお部屋にグレードアップして頂き有難うございました。今回は車を使わず宿泊しましたが、駅から近くとても立地のよいホテルだと思います。徒歩圏内に、イオンや飲食店があるので札幌市内に泊まるより… 2019-03-01 21:26:36投稿 <a href=\"http://img.travel.rakuten.co.jp/image/tr/api/hs/RmfmX/?f_hotel_no=901\" class=\"3click\">つづきはこちら<\/a>"}},{"hotelRatingInfo":{"serviceAverage":4.19,"locationAverage":4.39,"roomAverage":4.57,"equipmentAverage":4.05,"bathAverage":3.84,"mealAverage":4.18}}],[{"hotelBasicInfo":{"hotelNo":68288,"hotelName":"ホテルマイステイズ札幌駅北口","hotelInformationUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/dQ4dX/?f_no=68288","planListUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/cHNRi/?f_no=68288&f_flg=PLAN","dpPlanListUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/TDZXm/?noTomariHotel=68288","reviewUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/RmfmX/?f_hotel_no=68288","hotelKanaName":"ほてるまいすていずさっぽろえききたぐち","hotelSpecial":"JR札幌駅北口から徒歩2分。北大の自然の息吹も感じられるくつろぎの空間。","hotelMinCharge":3330,"latitude":155046.14,"longitude":508870.49,"postalCode":"060-0808","address1":"北海道","address2":"札幌市北区北8条西4-15","telephoneNo":"011-729-4055","faxNo":"011-729-0055","access":"JR札幌駅北口から徒歩2分で駅近&快適アクセス♪/地下鉄さっぽろ駅(南北線・東豊線)からも徒歩5分","parkingInformation":"40台・1泊1,000円【満車の際、提携駐車場をご案内】2019年4月より1泊1,500円へ料金改訂","nearestStation":"札幌","hotelImageUrl":"https://img.travel.rakuten.co.jp/share/HOTEL/68288/68288.jpg","hotelThumbnailUrl":"https://img.travel.rakuten.co.jp/HIMG/90/68288.jpg","roomImageUrl":"https://img.travel.rakuten.co.jp/share/HOTEL/68288/68288_t.jpg","roomThumbnailUrl":"https://img.travel.rakuten.co.jp/HIMG/INTERIOR/68288.jpg","hotelMapImageUrl":"https://img.travel.rakuten.co.jp/share/HOTEL/68288/68288map.gif","reviewCount":2647,"reviewAverage":3.93,"userReview":"2/24息子が受験のために利用しました。こちらが間違えて喫煙可の部屋を予約したのですが、受験生という事で禁煙のお部屋に取り換えてくださったと後から息子に聞きました。お気遣いありがとうございます。駅から… 2019-02-27 21:02:18投稿 <a href=\"http://img.travel.rakuten.co.jp/image/tr/api/hs/RmfmX/?f_hotel_no=68288\" class=\"3click\">つづきはこちら<\/a>"}},{"hotelRatingInfo":{"serviceAverage":3.88,"locationAverage":4.42,"roomAverage":4.05,"equipmentAverage":3.68,"bathAverage":3.74,"mealAverage":3.68}}],[{"hotelBasicInfo":{"hotelNo":1636,"hotelName":"札幌クラークホテル","hotelInformationUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/dQ4dX/?f_no=1636","planListUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/cHNRi/?f_no=1636&f_flg=PLAN","dpPlanListUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/TDZXm/?noTomariHotel=1636","reviewUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/RmfmX/?f_hotel_no=1636","hotelKanaName":"さっぽろ くらーくほてる","hotelSpecial":"北海道大学に隣接し、札幌都心のアクセスも充実した緑豊かな好立地。","hotelMinCharge":3500,"latitude":155064.83,"longitude":508861.83,"postalCode":"001-0013","address1":"北海道","address2":"札幌市北区北13条西4丁目(北海道大学病院前)","telephoneNo":"011-716-7772","faxNo":"011-716-3223","access":"札幌駅北口より徒歩12分、地下鉄南北線北12条駅より徒歩2分。札幌北ICより市内中心部方面へ15分。","parkingInformation":"なし 今までご利用の駐車場は新ビル建設のため廃止となりました。","nearestStation":"北12条","hotelImageUrl":"https://img.travel.rakuten.co.jp/share/HOTEL/1636/1636.jpg","hotelThumbnailUrl":"https://img.travel.rakuten.co.jp/HIMG/90/1636.jpg","roomImageUrl":"https://img.travel.rakuten.co.jp/share/HOTEL/1636/1636_kan.jpg","roomThumbnailUrl":"https://img.travel.rakuten.co.jp/HIMG/INTERIOR/1636.jpg","hotelMapImageUrl":"https://img.travel.rakuten.co.jp/share/HOTEL/1636/1636map.gif","reviewCount":1233,"reviewAverage":4.13,"userReview":"北大へのアクセスに便利です。設備は若干古いですが、清潔感はある良いホテルです。 2019-03-01 17:20:13投稿"}},{"hotelRatingInfo":{"serviceAverage":4,"locationAverage":3.82,"roomAverage":3.99,"equipmentAverage":3.87,"bathAverage":3.44,"mealAverage":3.9}}],[{"hotelBasicInfo":{"hotelNo":449,"hotelName":"ホテル サッポロメッツ","hotelInformationUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/dQ4dX/?f_no=449","planListUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/cHNRi/?f_no=449&f_flg=PLAN","dpPlanListUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/TDZXm/?noTomariHotel=449","reviewUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/RmfmX/?f_hotel_no=449","hotelKanaName":"さっぽろめっつ","hotelSpecial":"乾燥機付洗濯機を完備。禁煙フロアーあり。インターネット接続無料。女性も安心して泊まれるホテルです。","hotelMinCharge":2250,"latitude":155083.52,"longitude":508854.55,"postalCode":"001-0017","address1":"北海道","address2":"札幌市北区北17条西5丁目2-50","telephoneNo":"011-726-5511","faxNo":"011-716-1082","access":"地下鉄南北線麻生方面行乗車、北18条駅下車。階段にて2番出口より左手側に50m徒歩約2分。目印はホテル1階ローソンです。","parkingInformation":"駐車料金 1泊¥1300/完全電話予約制 (満車の場合は近隣のコインパーキングをご利用下さい。)","nearestStation":"北18条","hotelImageUrl":"https://img.travel.rakuten.co.jp/share/HOTEL/449/449.jpg","hotelThumbnailUrl":"https://img.travel.rakuten.co.jp/HIMG/90/449.jpg","roomImageUrl":"https://img.travel.rakuten.co.jp/share/HOTEL/449/449_room.jpg","roomThumbnailUrl":"https://img.travel.rakuten.co.jp/HIMG/INTERIOR/449.jpg","hotelMapImageUrl":"https://img.travel.rakuten.co.jp/share/HOTEL/449/449map.gif","reviewCount":1403,"reviewAverage":3.69,"userReview":"お部屋はよくメンテナンスされており、快適に宿泊させていただきました。地下鉄駅まで徒歩ですぐなのですすきのにもアクセスよく、また近隣コインパーキングも800円/24hで格安なのでたすかりました。階下にロ… 2019-02-24 00:30:08投稿 <a href=\"http://img.travel.rakuten.co.jp/image/tr/api/hs/RmfmX/?f_hotel_no=449\" class=\"3click\">つづきはこちら<\/a>"}},{"hotelRatingInfo":{"serviceAverage":3.48,"locationAverage":4.06,"roomAverage":3.69,"equipmentAverage":3.28,"bathAverage":3.05,"mealAverage":3.24}}],[{"hotelBasicInfo":{"hotelNo":127,"hotelName":"ホテル法華クラブ札幌","hotelInformationUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/dQ4dX/?f_no=127","planListUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/cHNRi/?f_no=127&f_flg=PLAN","dpPlanListUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/TDZXm/?noTomariHotel=127","reviewUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/RmfmX/?f_hotel_no=127","hotelKanaName":"ほっけくらぶ さっぽろ","hotelSpecial":"札幌中心街に立地、どこへ行くにも好アクセス。いつも心からのおもてなしを。","hotelMinCharge":3700,"latitude":155021.99,"longitude":508882.31,"postalCode":"060-0002","address1":"北海道","address2":"札幌市中央区北2条西3丁目","telephoneNo":"011-221-2141","faxNo":"011-221-2145","access":"JR・地下鉄「札幌駅」・「大通駅」徒歩5分、札幌駅前通地下歩行空間「3番出口」から徒歩1分 時計台すぐそば。","parkingInformation":"無し 近隣民間駐車場(有料)をご案内(詳しくはフロントまでお問合せ下さい。)","nearestStation":"札幌","hotelImageUrl":"https://img.travel.rakuten.co.jp/share/HOTEL/127/127.jpg","hotelThumbnailUrl":"https://img.travel.rakuten.co.jp/HIMG/90/127.jpg","roomImageUrl":"https://img.travel.rakuten.co.jp/share/HOTEL/127/127_s.jpg","roomThumbnailUrl":"https://img.travel.rakuten.co.jp/HIMG/INTERIOR/127.jpg","hotelMapImageUrl":"https://img.travel.rakuten.co.jp/share/HOTEL/127/127map.gif","reviewCount":1739,"reviewAverage":4.44,"userReview":" 何度かお世話になっております。いつもフロントの方達の対応の丁寧さに感激しております。また機会がありました際は宜しくお願い致します。 2019-02-26 14:59:46投稿"}},{"hotelRatingInfo":{"serviceAverage":4.42,"locationAverage":4.51,"roomAverage":4.25,"equipmentAverage":4.12,"bathAverage":4.24,"mealAverage":4.37}}],[{"hotelBasicInfo":{"hotelNo":149340,"hotelName":"ホテルリブマックス札幌駅前","hotelInformationUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/dQ4dX/?f_no=149340","planListUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/cHNRi/?f_no=149340&f_flg=PLAN","dpPlanListUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/TDZXm/?noTomariHotel=149340","reviewUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/RmfmX/?f_hotel_no=149340","hotelKanaName":"りぶまっくすさっぽろえきまえ","hotelSpecial":"JR札幌駅西口から徒歩5分♪全室マッサージチェア付き☆1人1本ミネラルウォータープレゼント中","hotelMinCharge":1,"latitude":155034.66,"longitude":508855.29,"postalCode":"060-0806","address1":"北海道","address2":"札幌市北区北6条西7丁目5-7","telephoneNo":"011-747-2010","faxNo":"011-747-2011","access":"JR札幌駅西口→JR高架下アーケードのサツエキBRIDGE→WEST6と直進後、道路向かい右側の小道に入り直ぐ♪","parkingInformation":"有 22台 1000円(税込/泊) ※先着順・車体制限有・入庫不可の際、近隣の駐車場へ案内(提携無)","nearestStation":"札幌","hotelImageUrl":"https://img.travel.rakuten.co.jp/share/HOTEL/149340/149340.jpg","hotelThumbnailUrl":"https://img.travel.rakuten.co.jp/HIMG/90/149340.jpg","roomImageUrl":"https://img.travel.rakuten.co.jp/share/HOTEL/149340/149340_room.jpg","roomThumbnailUrl":"https://img.travel.rakuten.co.jp/HIMG/INTERIOR/149340.jpg","hotelMapImageUrl":"https://img.travel.rakuten.co.jp/share/HOTEL/149340/149340map.gif","reviewCount":164,"reviewAverage":3.95,"userReview":"すべて申し分ないホテルです!駅もコンビニも近いのでおススメです部屋も広くて快適でした 2019-02-13 14:21:58投稿"}},{"hotelRatingInfo":{"serviceAverage":3.93,"locationAverage":3.95,"roomAverage":3.95,"equipmentAverage":3.88,"bathAverage":3.41,"mealAverage":3.42}}],[{"hotelBasicInfo":{"hotelNo":2908,"hotelName":"琴似グリーンホテル","hotelInformationUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/dQ4dX/?f_no=2908","planListUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/cHNRi/?f_no=2908&f_flg=PLAN","dpPlanListUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/TDZXm/?noTomariHotel=2908","reviewUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/RmfmX/?f_hotel_no=2908","hotelKanaName":"ことに ぐりーんほてる","hotelSpecial":"JR琴似駅徒歩3分。地下鉄琴似駅より徒歩10分。コンビニ目の前。","hotelMinCharge":4500,"latitude":155083.02,"longitude":508710.18,"postalCode":"063-0813","address1":"北海道","address2":"札幌市西区琴似3条1丁目","telephoneNo":"011-615-3344","faxNo":"011-615-5411","access":"JR琴似駅より徒歩約3分","parkingInformation":"有り 高さ2.1m以下 1,000円/1泊(連泊の場合、2泊目以降は1,000円/日となります)","nearestStation":"琴似(北海道)","hotelImageUrl":"https://img.travel.rakuten.co.jp/share/HOTEL/2908/2908.jpg","hotelThumbnailUrl":"https://img.travel.rakuten.co.jp/HIMG/90/2908.jpg","roomImageUrl":"https://img.travel.rakuten.co.jp/share/HOTEL/2908/2908_sgl.jpg","roomThumbnailUrl":"https://img.travel.rakuten.co.jp/HIMG/INTERIOR/2908.jpg","hotelMapImageUrl":"https://img.travel.rakuten.co.jp/share/HOTEL/2908/2908map.gif","reviewCount":401,"reviewAverage":3.54,"userReview":"埼玉県在住の40代サラリーマンが年末の出張で利用させて頂きました。食事は無かったので評価無しです。立地は雪国でも苦にならないくらい琴似駅に近かったので高評価です。札幌が近いためホテル周辺には繁華街や娯… 2019-01-23 22:04:00投稿 <a href=\"http://img.travel.rakuten.co.jp/image/tr/api/hs/RmfmX/?f_hotel_no=2908\" class=\"3click\">つづきはこちら<\/a>"}},{"hotelRatingInfo":{"serviceAverage":3.25,"locationAverage":4.25,"roomAverage":3.5,"equipmentAverage":3.35,"bathAverage":3.09,"mealAverage":0}}],[{"hotelBasicInfo":{"hotelNo":108414,"hotelName":"東横イン札幌駅北口","hotelInformationUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/dQ4dX/?f_no=108414","planListUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/cHNRi/?f_no=108414&f_flg=PLAN","dpPlanListUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/TDZXm/?noTomariHotel=108414","reviewUrl":"https://img.travel.rakuten.co.jp/image/tr/api/hs/RmfmX/?f_hotel_no=108414","hotelKanaName":"とうよこいんさっぽろえききたぐち","hotelSpecial":"札幌駅から徒歩2分の便利さ!交通機関も札幌駅に集中していますのでビジネスもプライベートも充実です","hotelMinCharge":3525,"latitude":155041.07,"longitude":508887.79,"postalCode":"060-0806","address1":"北海道","address2":"札幌市北区北6条西1-4-3","telephoneNo":"011-728-1045","faxNo":" ","access":"JR札幌駅 北口徒歩2分","parkingInformation":"駐車場有(1泊500円) 62台(先着順) ※提携駐車場あり(1泊1,000円)","nearestStation":"札幌","hotelImageUrl":"https://img.travel.rakuten.co.jp/share/HOTEL/108414/108414.jpg","hotelThumbnailUrl":"https://img.travel.rakuten.co.jp/HIMG/90/108414.jpg","roomImageUrl":"https://img.travel.rakuten.co.jp/share/HOTEL/108414/108414room1.jpg","roomThumbnailUrl":"https://img.travel.rakuten.co.jp/HIMG/INTERIOR/108414.jpg","hotelMapImageUrl":"https://img.travel.rakuten.co.jp/share/HOTEL/108414/108414map.gif","reviewCount":636,"reviewAverage":3.69,"userReview":"ススキノからは離れてますが地下鉄やJRがありますので何ら問題はありません。 2019-02-20 21:17:11投稿"}},{"hotelRatingInfo":{"serviceAverage":3.49,"locationAverage":4.41,"roomAverage":3.67,"equipmentAverage":3.33,"bathAverage":3.26,"mealAverage":3.23}}]]}
|
@@ -0,0 +1,117 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'rakuten_web_service'
|
3
|
+
|
4
|
+
describe RakutenWebService::Travel::AreaClass do
|
5
|
+
let(:endpoint) { 'https://app.rakuten.co.jp/services/api/Travel/GetAreaClass/20131024' }
|
6
|
+
let(:affiliate_id) { 'dummy_affiliate_id' }
|
7
|
+
let(:application_id) { 'dummy_application_id' }
|
8
|
+
let(:expected_query) do
|
9
|
+
{
|
10
|
+
affiliateId: affiliate_id,
|
11
|
+
applicationId: application_id,
|
12
|
+
formatVersion: 2
|
13
|
+
}
|
14
|
+
end
|
15
|
+
let(:response) { JSON.parse(fixture('travel/area_class.json')) }
|
16
|
+
let!(:expected_request) do
|
17
|
+
stub_request(:get, endpoint)
|
18
|
+
.with(query: expected_query).to_return(body: response.to_json)
|
19
|
+
end
|
20
|
+
|
21
|
+
before do
|
22
|
+
RakutenWebService.configure do |c|
|
23
|
+
c.affiliate_id = affiliate_id
|
24
|
+
c.application_id = application_id
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
describe '.search' do
|
29
|
+
before do
|
30
|
+
@area_class = RakutenWebService::Travel::AreaClass.search.first
|
31
|
+
end
|
32
|
+
|
33
|
+
specify 'respond largeClass' do
|
34
|
+
expect(@area_class['largeClassCode']).to eq('japan')
|
35
|
+
expect(@area_class['largeClassName']).to eq('日本')
|
36
|
+
end
|
37
|
+
specify '#children method responds all middle claasses under a given large class' do
|
38
|
+
expect(@area_class.children).to_not be_empty
|
39
|
+
expect(@area_class.children).to be_all do |entity|
|
40
|
+
entity.is_a?(RWS::Travel::AreaClass::MiddleClass)
|
41
|
+
end
|
42
|
+
end
|
43
|
+
specify '["middle_classes"] responds all middle claasses under a given large class' do
|
44
|
+
expect(@area_class["middleClasses"]).to_not be_empty
|
45
|
+
expect(@area_class["middleClasses"]).to be_all do |entity|
|
46
|
+
entity.is_a?(RWS::Travel::AreaClass::MiddleClass)
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
describe '#parent' do
|
52
|
+
before do
|
53
|
+
@area_class = RakutenWebService::Travel::AreaClass.search.first
|
54
|
+
end
|
55
|
+
|
56
|
+
specify 'parent is null' do
|
57
|
+
expect(@area_class.parent).to be_nil
|
58
|
+
end
|
59
|
+
specify 'the self is the parent of children' do
|
60
|
+
expect(@area_class.children).to be_all do |child|
|
61
|
+
child.parent == @area_class
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
describe '#to_query' do
|
67
|
+
before do
|
68
|
+
@area_class = RakutenWebService::Travel::AreaClass.search.first
|
69
|
+
end
|
70
|
+
|
71
|
+
specify 'As for LargeClass object, returns only its class code.' do
|
72
|
+
expect(@area_class.to_query).to eq({ 'largeClassCode' => 'japan' })
|
73
|
+
end
|
74
|
+
specify 'As for MiddleClass object, returns only its class code.' do
|
75
|
+
@area_class.children.each do |child|
|
76
|
+
expect(child.to_query).to eq({ 'largeClassCode' => 'japan', 'middleClassCode' => child.middle_class_code })
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
describe '.[] method' do
|
82
|
+
specify 'accepts a area code as argument and respond an class object with the given class code' do
|
83
|
+
expect(RakutenWebService::Travel::AreaClass::LargeClass['japan']).to be_a(RakutenWebService::Travel::AreaClass::LargeClass)
|
84
|
+
expect(RakutenWebService::Travel::AreaClass::LargeClass['japan'].large_class_code).to eq('japan')
|
85
|
+
end
|
86
|
+
specify 'AreaClass.[] supports' do
|
87
|
+
expect(RakutenWebService::Travel::AreaClass['japan']).to be_a(RakutenWebService::Travel::AreaClass::LargeClass)
|
88
|
+
expect(RakutenWebService::Travel::AreaClass['japan'].class_code).to eq('japan')
|
89
|
+
|
90
|
+
expect(RakutenWebService::Travel::AreaClass['hokkaido']).to be_a(RakutenWebService::Travel::AreaClass::MiddleClass)
|
91
|
+
expect(RakutenWebService::Travel::AreaClass['hokkaido'].class_code).to eq('hokkaido')
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
95
|
+
describe '#search' do
|
96
|
+
let(:area_class) { RakutenWebService::Travel::AreaClass['sapporo'] }
|
97
|
+
|
98
|
+
specify 'pass area class codes to the simple hotel API' do
|
99
|
+
expect(RakutenWebService::Travel::Hotel).to receive(:search).with(
|
100
|
+
'largeClassCode' => 'japan', 'middleClassCode' => 'hokkaido', 'smallClassCode' => 'sapporo'
|
101
|
+
)
|
102
|
+
|
103
|
+
area_class.search()
|
104
|
+
end
|
105
|
+
|
106
|
+
context 'Giving params' do
|
107
|
+
specify 'pass area class codes with the given params to the simple hotel API' do
|
108
|
+
expect(RakutenWebService::Travel::Hotel).to receive(:search).with(
|
109
|
+
'largeClassCode' => 'japan', 'middleClassCode' => 'hokkaido', 'smallClassCode' => 'sapporo',
|
110
|
+
'responseType' => 'large'
|
111
|
+
)
|
112
|
+
|
113
|
+
area_class.search('responseType' => 'large')
|
114
|
+
end
|
115
|
+
end
|
116
|
+
end
|
117
|
+
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'rakuten_web_service/travel/open_struct'
|
3
|
+
|
4
|
+
describe RakutenWebService::Travel::OpenStruct do
|
5
|
+
let(:object) { RakutenWebService::Travel::OpenStruct.new(params) }
|
6
|
+
|
7
|
+
context 'Given simple hash with pairs of key-value' do
|
8
|
+
let(:params) do
|
9
|
+
{ foo: 'bar', 'hoge' => 1, 'maxSize' => 100 }
|
10
|
+
end
|
11
|
+
|
12
|
+
specify 'should have interfaces with the name of a given hash keys' do
|
13
|
+
expect(object).to respond_to(:foo)
|
14
|
+
expect(object.foo).to eq(params[:foo])
|
15
|
+
expect(object).to respond_to(:hoge)
|
16
|
+
expect(object.hoge).to eq(params['hoge'])
|
17
|
+
end
|
18
|
+
specify 'should generate snakecase-method name' do
|
19
|
+
expect(object).to respond_to('maxSize')
|
20
|
+
expect(object).to respond_to('max_size')
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
context 'Given a hash including a hash' do
|
25
|
+
let(:params) do
|
26
|
+
{
|
27
|
+
name: 'Taro',
|
28
|
+
address: { country: :jp, city: :tokyo }
|
29
|
+
}
|
30
|
+
end
|
31
|
+
|
32
|
+
specify 'the inside hash should be converted to OpenStruct' do
|
33
|
+
expect(object.address.country).to eql(:jp)
|
34
|
+
expect(object.address.city).to eql(:tokyo)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
context 'Giving an array of hash' do
|
39
|
+
let(:params) do
|
40
|
+
{
|
41
|
+
array: [
|
42
|
+
{ foo: 'bar' },
|
43
|
+
{ hoge: 'fuga' }
|
44
|
+
]
|
45
|
+
}
|
46
|
+
end
|
47
|
+
|
48
|
+
specify 'the array should be converted to OpenStruct' do
|
49
|
+
expect(object.array[0].foo).to eql('bar')
|
50
|
+
expect(object.array[1].hoge).to eql('fuga')
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
@@ -0,0 +1,71 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe RakutenWebService::Travel::SearchResult do
|
4
|
+
let(:resource_class) do
|
5
|
+
Class.new(RakutenWebService::Resource) do
|
6
|
+
endpoint 'https://api.example.com/SearchDummyResource'
|
7
|
+
end
|
8
|
+
end
|
9
|
+
let(:search_result) do
|
10
|
+
RakutenWebService::Travel::SearchResult.new({}, resource_class)
|
11
|
+
end
|
12
|
+
|
13
|
+
describe '#has_next_page?' do
|
14
|
+
let(:response) do
|
15
|
+
double().tap do |d|
|
16
|
+
allow(d).to receive('[]').with('pagingInfo').and_return(pagingInfo)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
before do
|
21
|
+
allow(search_result).to receive(:response).and_return(response)
|
22
|
+
end
|
23
|
+
|
24
|
+
context 'when current page does not reach at the last page' do
|
25
|
+
let(:pagingInfo) do
|
26
|
+
{ 'page' => 1, 'pageCount' => 10 }
|
27
|
+
end
|
28
|
+
|
29
|
+
it 'should have next page' do
|
30
|
+
expect(search_result).to have_next_page
|
31
|
+
end
|
32
|
+
end
|
33
|
+
context 'when current page reaches at the last page' do
|
34
|
+
let(:pagingInfo) do
|
35
|
+
{ 'page' => 5, 'pageCount' => 5 }
|
36
|
+
end
|
37
|
+
|
38
|
+
it 'should not have next page' do
|
39
|
+
expect(search_result).to_not have_next_page
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
describe '#next_page' do
|
45
|
+
let(:response) do
|
46
|
+
double().tap do |d|
|
47
|
+
allow(d).to receive('[]').with('pagingInfo').and_return(pagingInfo)
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
before do
|
52
|
+
allow(search_result).to receive(:response).and_return(response)
|
53
|
+
end
|
54
|
+
|
55
|
+
let(:pagingInfo) do
|
56
|
+
{ 'page' => 2, 'pageCount' => 3 }
|
57
|
+
end
|
58
|
+
|
59
|
+
it 'shold call search to fetch next page results.' do
|
60
|
+
expect(search_result).to receive(:search).with('page' => 3)
|
61
|
+
|
62
|
+
search_result.next_page
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
describe '#search' do
|
67
|
+
it 'should return trave\'s search result' do
|
68
|
+
expect(search_result.search({})).to be_a(RakutenWebService::Travel::SearchResult)
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
@@ -0,0 +1,65 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'rakuten_web_service'
|
3
|
+
|
4
|
+
describe RakutenWebService::Travel::Hotel do
|
5
|
+
let(:endpoint) { 'https://app.rakuten.co.jp/services/api/Travel/SimpleHotelSearch/20170426' }
|
6
|
+
let(:affiliate_id) { 'dummy_affiliate_id' }
|
7
|
+
let(:application_id) { 'dummy_application_id' }
|
8
|
+
let(:expected_query) do
|
9
|
+
{
|
10
|
+
affiliateId: affiliate_id,
|
11
|
+
applicationId: application_id,
|
12
|
+
formatVersion: 2,
|
13
|
+
largeClassCode: 'japan',
|
14
|
+
middleClassCode: 'hokkaido',
|
15
|
+
smallClassCode: 'sapporo',
|
16
|
+
detailClassCode: 'A'
|
17
|
+
}
|
18
|
+
end
|
19
|
+
|
20
|
+
before do
|
21
|
+
RakutenWebService.configure do |c|
|
22
|
+
c.affiliate_id = affiliate_id
|
23
|
+
c.application_id = application_id
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
describe '.search' do
|
28
|
+
let(:query) do
|
29
|
+
{
|
30
|
+
largeClassCode: 'japan',
|
31
|
+
middleClassCode: 'hokkaido',
|
32
|
+
smallClassCode: 'sapporo',
|
33
|
+
detailClassCode: 'A'
|
34
|
+
}
|
35
|
+
end
|
36
|
+
|
37
|
+
before do
|
38
|
+
response = JSON.parse(fixture('travel/simple_hotel_search.json'))
|
39
|
+
@expected_request = stub_request(:get, endpoint)
|
40
|
+
.with(query: expected_query).to_return(body: response.to_json)
|
41
|
+
|
42
|
+
response['pagingInfo']['page'] = 2
|
43
|
+
response['pagingInfo']['pageCount'] = 2
|
44
|
+
response['pagingInfo']['first'] = 31
|
45
|
+
response['pagingInfo']['last'] = 60
|
46
|
+
@second_request = stub_request(:get, endpoint)
|
47
|
+
.with(query: expected_query.merge(page: 2))
|
48
|
+
.to_return(body: response.to_json)
|
49
|
+
end
|
50
|
+
|
51
|
+
let(:results) { RakutenWebService::Travel::Hotel.search(query) }
|
52
|
+
let(:first) { results.first }
|
53
|
+
|
54
|
+
specify 'responds an array of RWS::Travel::Hotel object' do
|
55
|
+
expect(first).to be_a(RakutenWebService::Travel::Hotel)
|
56
|
+
end
|
57
|
+
specify 'respond object has 2 methods representing basic info and rating info ' do
|
58
|
+
expect(first.basic_info).to eq(first['hotelBasicInfo'])
|
59
|
+
expect(first.rating_info).to eq(first['hotelRatingInfo'])
|
60
|
+
end
|
61
|
+
specify 'should have 60 objects by getting responses automatically' do
|
62
|
+
expect(results.to_a.size).to eql 30
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
metadata
CHANGED
@@ -1,29 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rakuten_web_service
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.10.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tatsuya Sato
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2019-03-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '0'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - "
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
26
|
+
version: '0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -44,14 +44,14 @@ dependencies:
|
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: 3.
|
47
|
+
version: 3.8.0
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: 3.
|
54
|
+
version: 3.8.0
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: tapp
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -119,6 +119,7 @@ files:
|
|
119
119
|
- examples/books_item_search.rb
|
120
120
|
- examples/gora_search.rb
|
121
121
|
- examples/ichiba_item_search.rb
|
122
|
+
- examples/travel_apis.rb
|
122
123
|
- lib/rakuten_web_service.rb
|
123
124
|
- lib/rakuten_web_service/all_proxy.rb
|
124
125
|
- lib/rakuten_web_service/books.rb
|
@@ -156,6 +157,12 @@ files:
|
|
156
157
|
- lib/rakuten_web_service/response.rb
|
157
158
|
- lib/rakuten_web_service/search_result.rb
|
158
159
|
- lib/rakuten_web_service/string_support.rb
|
160
|
+
- lib/rakuten_web_service/travel.rb
|
161
|
+
- lib/rakuten_web_service/travel/area_class.rb
|
162
|
+
- lib/rakuten_web_service/travel/hotel.rb
|
163
|
+
- lib/rakuten_web_service/travel/open_struct.rb
|
164
|
+
- lib/rakuten_web_service/travel/resource.rb
|
165
|
+
- lib/rakuten_web_service/travel/search_result.rb
|
159
166
|
- lib/rakuten_web_service/version.rb
|
160
167
|
- rakuten_web_service.gemspec
|
161
168
|
- spec/fixtures/books/book_search_with_keyword_Ruby.json
|
@@ -179,6 +186,8 @@ files:
|
|
179
186
|
- spec/fixtures/kobo/genre_search.json
|
180
187
|
- spec/fixtures/recipe/category.json
|
181
188
|
- spec/fixtures/recipe/ranking.json
|
189
|
+
- spec/fixtures/travel/area_class.json
|
190
|
+
- spec/fixtures/travel/simple_hotel_search.json
|
182
191
|
- spec/integration/integration_spec.rb
|
183
192
|
- spec/rakuten_web_service/books/book_spec.rb
|
184
193
|
- spec/rakuten_web_service/books/cd_spec.rb
|
@@ -207,6 +216,10 @@ files:
|
|
207
216
|
- spec/rakuten_web_service/recipe_spec.rb
|
208
217
|
- spec/rakuten_web_service/resource_spec.rb
|
209
218
|
- spec/rakuten_web_service/response_spec.rb
|
219
|
+
- spec/rakuten_web_service/travel/area_class_spec.rb
|
220
|
+
- spec/rakuten_web_service/travel/open_struct_spec.rb
|
221
|
+
- spec/rakuten_web_service/travel/search_result_spec.rb
|
222
|
+
- spec/rakuten_web_service/travel/simple_hotel_search_spec.rb
|
210
223
|
- spec/spec_helper.rb
|
211
224
|
- spec/support/fixture_suppot.rb
|
212
225
|
homepage: http://webservice.rakuten.co.jp/
|
@@ -254,6 +267,8 @@ test_files:
|
|
254
267
|
- spec/fixtures/kobo/genre_search.json
|
255
268
|
- spec/fixtures/recipe/category.json
|
256
269
|
- spec/fixtures/recipe/ranking.json
|
270
|
+
- spec/fixtures/travel/area_class.json
|
271
|
+
- spec/fixtures/travel/simple_hotel_search.json
|
257
272
|
- spec/integration/integration_spec.rb
|
258
273
|
- spec/rakuten_web_service/books/book_spec.rb
|
259
274
|
- spec/rakuten_web_service/books/cd_spec.rb
|
@@ -282,5 +297,9 @@ test_files:
|
|
282
297
|
- spec/rakuten_web_service/recipe_spec.rb
|
283
298
|
- spec/rakuten_web_service/resource_spec.rb
|
284
299
|
- spec/rakuten_web_service/response_spec.rb
|
300
|
+
- spec/rakuten_web_service/travel/area_class_spec.rb
|
301
|
+
- spec/rakuten_web_service/travel/open_struct_spec.rb
|
302
|
+
- spec/rakuten_web_service/travel/search_result_spec.rb
|
303
|
+
- spec/rakuten_web_service/travel/simple_hotel_search_spec.rb
|
285
304
|
- spec/spec_helper.rb
|
286
305
|
- spec/support/fixture_suppot.rb
|