目的
こちらでDLしたサンプルに対して少し試してみる
※自分用の確認メモ
※TODO:json.JSONDecoder,json.JSONEncoder,dump形式変換後の処理
サンプルコード
# Windows Add env PYTHONIOENCODING = UTF-8 & restart vscode
import json
import pprint
# json ファイルの読み込み:qiita.jsonは1行のファイル
with open('qiita.json', 'r', encoding='UTF-8') as f:
jsonstr = json.load(f)
# jsonstr を JSON 形式の f へのストリームとして直列化する
with open('qiitadump.json', 'w', encoding='UTF-8') as f:
json.dump(jsonstr, f)
# コメントアウトしないと以下の処理は一部動作しない
print(type(jsonstr)) # <class 'list'>
print(len(jsonstr)) # 35
# 各記事の構造は dict : DLしたデータは dict の list という構造
for i, contents in enumerate(jsonstr):
print(type(contents)) # <class 'dict'>
break
# 1記事の tag の表示
for i, contents in enumerate(jsonstr):
for j, tex in enumerate(jsonstr[i]):
print(str(j).rjust(2, '0'), tex)
break
# 00 rendered_body
# 01 body
# 02 coediting
# 03 comments_count
# 04 created_at
# 05 group
# 06 id
# 07 likes_count
# 08 private
# 09 reactions_count
# 10 tags
# 11 title
# 12 updated_at
# 13 url
# 14 user
# 15 page_views_count
# 1記事分の tag と その内容
for i, contents in enumerate(jsonstr):
for k, v in dict(contents[i]).items():
print(k, v)
break
# 1記事文のデータを整形して表示
for i, contents in enumerate(jsonstr):
pprint.pprint(contents, width=20)
break
Qiitaの投稿の構造(Docより抜粋)
ユーザからの投稿を表します。
・rendered_body
HTML形式の本文
Example: "Example"
Type: string
・body
Markdown形式の本文
Example: "# Example"
Type: string
・coediting
この記事が共同更新状態かどうか (Qiita:Teamでのみ有効)
Example: false
Type: boolean
・comments_count
この記事へのコメントの数
Example: 100
Type: integer
・created_at
データが作成された日時
Example: "2000-01-01T00:00:00+00:00"
Type: string
Format: date-time
・group
Qiita:Teamのグループを表します。
・id
記事の一意なID
Example: "4bd431809afb1bb99e4f"
Type: string
Pattern: /^[0-9a-f]{20}$/
・likes_count
この記事への「いいね!」の数(Qiitaでのみ有効)
Example: 100
Type: integer
・private
限定共有状態かどうかを表すフラグ (Qiita:Teamでは無効)
Example: false
Type: boolean
・reactions_count
絵文字リアクションの数(Qiita:Teamでのみ有効)
Example: 100
Type: integer
・tags
記事に付いたタグ一覧
Example: [{"name"=>"Ruby", "versions"=>["0.0.1"]}]
Type: array
・title
記事のタイトル
Example: "Example title"
Type: string
・updated_at
データが最後に更新された日時
Example: "2000-01-01T00:00:00+00:00"
Type: string
Format: date-time
・url
記事のURL
Example: "https://qiita.com/yaotti/items/4bd431809afb1bb99e4f"
Type: string
・user
Qiita上のユーザを表します。
・page_views_count
閲覧数
Example: 100
Type: null, integer
参考にしたのは以下のサイト
Qiita API v2ドキュメント - Qiita:Developer
7.2.2. json による構造化されたデータの保存
json --- JSON エンコーダおよびデコーダ