自動化・連携開発に触るのはもっぱらJSON。iPaaS以外での開発はもっぱらPythonなのですが、
pprint限界っす
100件分とか、件数が肥大するとpprintじゃ無理。収まりきらないし、目視が限界。
もちろん件数絞るし、まあ.jsonとして保存してもいいのだけど、
- ビルドの過程のその場限りで見るだけ、使い捨てのものなので、一つのエンドポイント叩くごとにいちいちPath記述してファイル保存する気にならなかった。
- ファイル保存すると、ファイル増えすぎて邪魔。綺麗なフォルダ構成に整理するのもそのためにパス調整するのも面倒。
- postmanもあるけど、API叩くのはSDKの方が楽だよね。
- そもそもコードでのjsonの加工結果を見たい時だってある。
JSONのオンラインエディターはJavaScript用
そんな時、JSON Editor OnlineでもJSON Blobでも、Python記述をテキストエディタで下記のような置換を施した上でコピペするというのを繰り返していた。
- None -> null
- True/False - true/false
- ' -> "
そこでアップロードAPIのあるJSON Blob
元々どちらかというとUI的に好みで、JSON Editor OnlineではなくJSON Blobを使っていた(JSON Editor Online、前までど真ん中に広告がなかったっけ?あれが嫌だった。あと緑とオレンジって配色も好きじゃないっす)。
ある日、jsonblob.comを触っていてふと画面の隅っこに目をやると、何かAPIって書いてある!
見ると、APIを使ってJSONをアップできるんだとか。
うわーこれ、今までやってたコピペを省略できんじゃん!
これは多用間違いなし!
ということで早速、関数書いた。
import requests, webbrowser
def upload_to_jsonBlob(body):
endpoint = "https://jsonblob.com/api/jsonBlob"
headers_ = {"Content-Type": "application/json" ,"Accept": "application/json"}
response = requests.post(endpoint, json = body, headers = headers_)
json_file = response.headers["location"]
doc_id = json_file.split("/")[-1]
print(f"Json File :{json_file}\n編集画面 :https://jsonblob.com/{doc_id}")
webbrowser.open(f"https://jsonblob.com/{doc_id}",new=2) #可能であれば新しいtabで開く
test = {"test":"test"}
upload_to_jsonBlob(test)
# Json File : http://jsonblob.com/api/jsonBlob/949773552949936128
# 編集画面 : https://jsonblob.com/949773552949936128
※保存期間は最終アクセスから30日間
getもあるよ
def get_from_jsonBlob(blobID):
endpoint = "https://jsonblob.com/api/jsonBlob"
headers_ = {"Content-Type": "application/json",
"Accept": "application/json"}
response = requests.get(endpoint+"/"+str(blobID), headers=headers_)
return response.json()
UpしてOKだったjsonを再利用してテストをスピードアップ。
ちなみに
JSON Editor OnlineにもAPIあるようなのだけど、
from datetime import datetime as dt
def jsoneditoronline(body):
endpoint = "http://api.jsoneditoronline.org/v1/docs/"
headers_ = {"Content-Type": "application/json" ,"Accept": "application/json"}
data_ = {"name":dt.now().strftime("'%Y/%m/%d %H:%M:%S'"),"data":body}
response = requests.put(endpoint, json = data_, headers = headers_)
#もしくはPOST
print(response.text)
doc_id = response.json()["id"]
print(f"https://jsoneditoronline.org/#left=cloud.{doc_id}")
test = {"test":"test"}
jsoneditoronline(test)
# {"ok":true,"id":"d23a0a0eab8c4a33a9ef7c7501fd4a8b"}
# https://jsoneditoronline.org/#left=cloud.d23a0a0eab8c4a33a9ef7c7501fd4a8b
名前を付けたファイルは作れても、Bodyは反映されなかった。ファイル作成できるだけなのかな?