gRPCで送受信されるメッセージは、標準ではProtocol Buffersでシリアライゼーションされることになっている。一方、gRPCのwire protocolはそこは柔軟になっていて、実際、多くの実装ではシリアライゼーション形式をカスタマイズ可能だ。 たとえば、ある種のニーズのためにFlatBuffersが必要だとか、HTTP/2をサポートする標準的なツールでの解析のためにJSONのほうが可読性が良いとか、社内のバイナリ表現の一貫性のためMsgPackが必要だとか、宗教的な理由でProtobufを使えないとか、そういうときはスキーマだけprotobufで書いておいて、シリアライズは好きなようにやれば良い。 で、具体的にはそれはどうやったらできるのだろう。これが本稿の話題である。いくつかの言語で実際にJSONでシリアライズするクライアントとサーバーを書いてみたので、その結果を紹介する。
以下のツイートにもある通り、一見 golang は struct を定義しないと JSON を扱えないように見えます。他にも似たようなツイートをチラホラと見かけましたが、それらは全部誤解です。そこでこの記事では、golang でゆるふわ (structを定義せず) に JSON を扱う方法を紹介します。 golang。rubyのようにゆるふわにJSONは扱えない? https://t.co/olsryDHc5G — bamchoh (@bamchoh) 2016年6月24日 この記事では入力の json.Unmarshal() を取り扱いますが、出力の json.Marshal() にも応用できます。 TL;DR json.Unmarshal() には *interface{} を渡せます interface{} は dproxy を使うと、値のアクセスで楽ができます json.Unmar
MySQL 5.7.7 Release Candidateと同時にLabs(実験室)版としてMySQL JSONがリリースされました。MySQL JSONでは新しいデータ型としてJSON型をサポートしています。JSON型は格納されるデータ形式が正しいかを自動的にチェックするDocument Validationを持ち、またJSONドキュメントをバイナリ化して格納することで参照性能の向上を図っています。またMySQL 5.7.6で実装されたGenerated Column(生成列)を活用することで、functional indexes(関数インデックス)の形でインデックスを利用できます。 関連情報(MySQL Server Teamブログ): 機能概要 JSON Labs Release: Native JSON Data Type and Binary Format | MySQL Ser
jq Manual jqで簡単JSON加工 | Developers.IO jqコマンドが実は高性能すぎてビビッた話 - beatsync.net JSONを超絶に読みやすくする jq コマンド - WebAPIバリバリ使うor開発する人必須 CLIでJSONの整形をする - ( ꒪⌓꒪) ゆるよろ日記 JSON形式の情報を様々な条件や書式として成形、フィルタリングツール『jq』。上記関連エントリで私もこのツールの存在を知る事になったのですが、ツールの簡易さ・便利さに感動しながら私もちょくちょく利用させてもらっています。 そこでこのエントリでは、jq公式ページに展開されている利用ガイド・リファレンス的な位置付けの『jq Manual』を写経がてらざっくり日本語訳してみました。ざっくり訳なのでこの部分の訳おかしい・間違ってる等ありましたら御指摘頂けると幸いです。例示されているサンプルコードも
http://instagram-engineering.tumblr.com/post/97147584853/json-parsing 1 comment | 0 points | by WazanovaNews ■ comment by Jshiike | 約8時間前 Instagramが、ig-json-parserをオープンソースで提供しています。 背景 Androidにおける、JSONのエンコーディング/デコーディングは、dalvik特有の問題やメモリ消費が課題となる。 Jackson ObjectMapperで上記の問題は概ね解決できるが、 シリアライズ/デシリアライズしたことのないオブジェクトを処理する際のペナルティが大きい。モバイルの起動時間に影響するケースもあるので、頭が痛い。メモリが大きく割り当てられるので、ガベージコレクタとの絡みを考慮する必要がある。作業が完了し
最近APIのバリデーションを行うのにJSON Schemaを使おうという話をよく聞くのですが じゃあやってみようとすると、単体のJSONのバリデーションを行うことは出来るけれど それが実際の運用に適用できるようにするためには、 それなりに考えなくてはいけないようです。 JSON Schemaって? JSON Schemaは、文字の通りJSONのスキーマ定義を明確にするものです。 2014/09/07現在、IETFにdraft v4が3つに分割されて公開されています。 JSON Schema Core JSON Schema Validation JSON Hyper-Schema それで、単体のJSONファイルの確認ならばCoreだけで十分なのですが WebサービスのAPIを管理しようとなると、 JSON Hyper-Schemaのほうで定義されているlinksを使って、ひとつのURIに対
Incidentally, decoding JSON data (or really, almost any data structure) is really easy in Go (golang). We simply call json.Unmarshal(…) and boom! We have nice data structures. Well, except if our input source is not very well defined (meaning not strictly typed). Objects with loose schema Take this example. We want to decode a JSON object that looks like this: { "author": "attilaolah@gmail.com", "
I need to decode a JSON string with the float number like: {"name":"Galaxy Nexus", "price":"3460.00"} I use the Golang code below: package main import ( "encoding/json" "fmt" ) type Product struct { Name string Price float64 } func main() { s := `{"name":"Galaxy Nexus", "price":"3460.00"}` var pro Product err := json.Unmarshal([]byte(s), &pro) if err == nil { fmt.Printf("%+v\n", pro) } else { fmt.
今日は13日の金曜日! ということでせっかくなのでJSONネタで The Gopher character is based on the Go mascot designed by Renée French. encoding/json GoにはJSONを扱う標準パッケージが含まれています。 encoding/json 3rd partyのJSONライブラリでも探してきて試そうかとも思ったのですがそれ以前に標準パッケージを全然把握していない自分に気付いたので、そちらを試すことにしました。 エンコード 手っ取り早くエンコードするにはMarshal関数を使います。インデント整形したい場合はMarshalIndentを使います。 structのエンコード structをJSONオブジェクトにエンコードします。 package main import ( "encoding/json" "log
CompanyEngineeringProductSunsetting AtomWe are archiving Atom and all projects under the Atom organization for an official sunset on December 15, 2022. January 30, 2023 Update: Update to the previous version of Atom before February 2 On December 7, 2022, GitHub detected unauthorized access to a set of repositories used in the planning and development of Atom. After a thorough investigation, we hav
JSON for Humans View the Project on GitHub json5/json5 JSON5 – JSON for Humans JSON5 is an extension to the popular JSON file format that aims to be easier to write and maintain by hand (e.g. for config files). It is not intended to be used for machine-to-machine communication. (Keep using JSON or other file formats for that. 🙂) JSON5 was started in 2012, and as of 2022, now gets >65M downloads/w
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く