ahgsql/json-repair-php

PHP library to repair broken/invalid JSON strings, especially from LLM outputs

dev-main 2025-03-10 20:49 UTC

This package is not auto-updated.

Last update: 2025-05-06 20:15:19 UTC


README

PHP kütüphanesi ile bozuk/geçersiz JSON stringlerini onarın, özellikle LLM (Dil Modeli) çıktılarından.

Özellikler

  • Eksik tırnak işaretlerini düzeltme
  • Eksik virgülleri düzeltme
  • LLM çıktılarından JSON içeriğini çıkarabilme
  • Tırnak içine alınmamış anahtarları düzeltme
  • String olmayan değerleri (sayı, boolean, null) otomatik tanıyabilme
  • İç içe objeleri ve dizileri destekleme

Kurulum

Composer ile kurulum:

composer require ahgsql/json-repair-php

Kullanım

Temel Kullanım

<?php

use JsonRepair\JsonRepair;

// Bozuk JSON stringini onar ve PHP dizisi olarak döndür
$jsonStr = '{ name: "John", age: 30, isActive: true }';
$result = JsonRepair::loads($jsonStr);
print_r($result);
// Çıktı: Array ( [name] => John [age] => 30 [isActive] => 1 )

// Bozuk JSON stringini onar ve JSON string olarak döndür
$jsonStr = '{ name: "John", age: 30, isActive: true }';
$result = JsonRepair::repairJson($jsonStr);
echo $result;
// Çıktı: {"name":"John","age":30,"isActive":true}

LLM Çıktılarından JSON Çıkarma

<?php

use JsonRepair\JsonRepair;

// LLM çıktısından JSON içeriğini çıkar
$llmOutput = 'Anlıyorum işte size uygun bir JSON: ```json { "title": "Başlık", "items": [1, 2, 3] }```';
$result = JsonRepair::loads($llmOutput);
print_r($result);
// Çıktı: Array ( [title] => Başlık [items] => Array ( [0] => 1 [1] => 2 [2] => 3 ) )

Dosyadan JSON Okuma

<?php

use JsonRepair\JsonRepair;

// Dosyadan JSON oku ve onar
$result = JsonRepair::fromFile('data.json');
print_r($result);

Seçenekler

<?php

use JsonRepair\JsonRepair;

// Tüm seçeneklerle kullanım
$jsonStr = '{ "name": "Türkçe Karakter İçeren İsim" }';
$result = JsonRepair::repairJson($jsonStr, [
    'returnObjects' => false,     // true: PHP dizisi döndürür, false: JSON string döndürür
    'skipJsonParse' => false,     // true: json_decode kontrolünü atlar
    'logging' => false,           // true: onarım loglarını da döndürür
    'ensureAscii' => false        // false: Unicode karakterleri korur
]);
echo $result;
// Çıktı: {"name":"Türkçe Karakter İçeren İsim"}

Geliştirme

Gereksinimleri Yükleme

composer install

Testleri Çalıştırma

./vendor/bin/phpunit tests

Lisans

MIT