Search…
JSON操作
JSON(JavaScript Object Notation)は、人間にとって読み書きしやすい軽量なデータ交換フォーマットです。コンピュータにとっても生成やパースが容易です。JSONは特定の言語にまったく依存しないので、理想的なデータ交換フォーマットです。
JSONについて詳しくは、json.orgをご覧ください。

JSONをパースする

他のアプリケーションで受け取ったり既存のアプリケーションで生成したJSON文字列をパースするには以下のようにします。
1
import json
2
3
struct Customer {
4
first_name string
5
last_name string
6
hometown string
7
}
8
9
fn main() {
10
customers_string := '[{ "first_name": "Vitor", "last_name": "Oliveira", "hometown": "Rio de Janeiro" }, { "first_name": "Don", "last_name": "Nisnoni", "hometown": "Kupang" }]'
11
customers := json.decode([]Customer, customers_string) or {
12
eprintln('Failed to parse json')
13
return
14
}
15
16
// Print the list of customers
17
for customer in customers {
18
println('$customer.first_name $customer.last_name: $customer.hometown')
19
}
20
}
Copied!

JSONを生成する

通信やシリアライズで用いるJSON文字列は簡単に生成できます。以下のようにデコード/エンコードできます。
1
import json
2
3
struct Customer {
4
first_name string
5
last_name string
6
hometown string
7
}
8
9
fn main() {
10
customer_string := '[{ "first_name": "Vitor", "last_name": "Oliveira", "hometown": "Rio de Janeiro"}]'
11
12
customer := json.decode([]Customer, customer_string) or {
13
eprintln('Failed to parse json')
14
return
15
}
16
17
encoded_json := json.encode(customer)
18
19
println(encoded_json)
20
}
Copied!

演習

  1. 1.
    普段使っている言語とVでJSONの扱いがどう違うかを比較してみましょう。
  2. 2.
    住所情報を持たせるためのAddress構造体を作りましょう。
  3. 3.
    Address構造体を用いて、JSON形式を含む文字列をデコード/エンコードしましょう。
  4. 4.
    2つの構造体AddressUserを作りましょう。1人のuserは複数のaddressを持ちます。続いて、'[{ "first_name": "Vitor", "last_name": "Oliveira", "hometown": "Rio de Janeiro", "addresses": [{ street_name: "Rua Princesa Isabel", city: "Rio de Janeiro", country: "Brazil" }] }]'のようなネストしたJSON文字列を受け取ってデコード/エンコードしましょう。