Skip to content

JSON 処理ライブラリ

github.com/cybergodev/json は、高性能でスレッドセーフな Go JSON 処理ライブラリです。解析、クエリ、変更、検証、フォーマットなど豊富な JSON 操作機能を提供しながら、標準ライブラリ encoding/json との 100% 互換性を維持しています。

主な特徴

  • 100% encoding/json 互換 — 標準ライブラリのシームレスな置き換え、既存コードの変更不要
  • スレッドセーフ — すべての操作が並行安全、高並行シナリオに対応
  • パスクエリ — JSONPath スタイルのパス式をサポート、ワイルドカード・スライス含む
  • 型安全な取得 — ジェネリック API (GetTyped[T]) と型アサーションメソッド (SafeGet)
  • ストリーミング処理 — 大規模ファイルや JSONL/NDJSON 形式のストリーミング処理をサポート
  • セキュリティ保護 — 入力検証、深さ制限、危険パターン検出を内蔵
  • 高性能キャッシュ — スマートキャッシュ、事前解析最適化、オブジェクトプール再利用
  • 拡張可能 — フックシステム、カスタムエンコーダ、バリデータ

インストール

bash
go get github.com/cybergodev/json

30 秒クイック体験

go
package main

import (
    "fmt"
    "github.com/cybergodev/json"
)

func main() {
    data := `{"name": "CyberGo", "version": 1, "tags": ["json", "go"]}`

    // 1. パス取得
    name := json.GetString(data, "name")
    fmt.Println("Name:", name)

    // 2. 値の変更
    updated, _ := json.Set(data, "version", 2)
    fmt.Println("Updated:", updated)

    // 3. 検証
    if json.Valid([]byte(data)) {
        fmt.Println("Valid JSON")
    }

    // 4. デフォルト値付き取得
    desc := json.GetString(data, "description", "デフォルト説明")
    fmt.Println("Description:", desc)

    // 5. 構造体にデコード
    type Config struct {
        Name    string   `json:"name"`
        Version int      `json:"version"`
        Tags    []string `json:"tags"`
    }
    var config Config
    json.Unmarshal([]byte(data), &config)
    fmt.Printf("Config: %+v\n", config)
}

機能概要

パス操作

機能関数説明
値の取得Get, GetString, GetInt...ネストされたパス、配列インデックスをサポート
デフォルト値付き取得GetString, GetInt などdefaultValue パラメータを渡す
値の設定Set存在しないパスを自動作成(Config.CreatePaths)
値の削除Delete指定パスを削除

エンコード・デコード

機能関数説明
エンコードMarshal, MarshalIndentencoding/json と 100% 互換
デコードUnmarshal, Parse, ParseAnyジェネリックと型安全をサポート
フォーマットPrettify, CompactJSON 整形・圧縮

高度な機能

機能関数/型説明
ジェネリック APIGetTyped[T]型安全なジェネリック取得
事前解析Processor.PreParse, Processor.GetFromParsed一度解析して複数回クエリ
安全な取得SafeGetAccessResultチェーン式の型変換
ストリーミング処理Processor.ForeachFile大規模ファイルのメモリフレンドリー処理
JSONL 処理StreamLinesInto[T]ログ/データパイプライン
Schema 検証ValidateSchemaJSON Schema 検証

モジュールナビゲーション

モジュール説明
クイックスタートインストール、基本操作、コア概念
パス式の構文パスクエリ、スライス、ワイルドカード、フィールド抽出
API ドキュメント完全な API リファレンス
大規模ファイル処理ストリーミング処理、チャンク読み書き、メモリ最適化
使用例実践的なコードサンプル
高度な機能の例バッチエンコード、事前解析、フックシステム

パフォーマンス特性

  • ゼロコピー解析 — メモリ割り当てを削減
  • スマートキャッシュ — ホットパスを自動キャッシュ、キャッシュウォームアップをサポート
  • オブジェクトプール — 中間オブジェクトの再利用、GC 負荷を低減
  • 並列処理 — バッチ操作の自動並列化
  • 事前解析最適化 — 大型 JSON を一度解析して複数回クエリ

標準ライブラリとの比較

機能encoding/jsoncybergodev/json
基本エンコード・デコード✅ 100% 互換
パスクエリ✅ ドット/ブラケット構文
型安全な取得✅ ジェネリック API
ストリーミング処理基本的✅ 強化版
JSONL サポート✅ ネイティブサポート
セキュリティ検証✅ 内蔵保護
フックシステム✅ 拡張可能
キャッシュ最適化✅ スマートキャッシュ

クイック意思決定ガイド

シナリオ推奨アプローチ
シンプルなクエリGetString(data, "path")
デフォルト値付きGetString(data, "path", "default")
型安全GetTyped[User](data, "user")
高頻度クエリProcessor + PreParse
大規模ファイルProcessor.ForeachFile
信頼できない入力SecurityConfig()

次のステップ