1
2

More than 1 year has passed since last update.

JSON Editor Onlineもいいけど、JSON Blobもあるよ ~ 解析用編集画面へJSONをアップするAPIを叩く関数をコピペ用に公開~

Last updated at Posted at 2022-03-05

自動化・連携開発に触るのはもっぱら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って書いてある!
image.png
見ると、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は反映されなかった。ファイル作成できるだけなのかな?

1
2
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2