Kagamitan sa Pag-ayos ng JSON
Awtomatikong ayusin at ibalik ang sira o maling format na JSON—ligtas, mabilis, at libre.
Ang tool na ito ay nag-aayos ng sirang o hindi wasto na JSON gamit ang awtomatikong pagwawasto ng mga error. Nilalayon nito ang mga karaniwang problema sa sintaks na makikita sa na-export na data, mga log, o mga file na manu-manong in-edit—tulad ng nawawalang panipi, hindi tamang mga kuwit, o hindi magkatugmang panaklong—at nagbibigay ng wastong, madaling i-parse na JSON bilang output.
Ayusin ang iyong JSON sa ibaba
Paano Gumagana ang Pag-ayos ng JSON
Sinusuri ng tool ang iyong input para sa mga karaniwang problema sa sintaks ng JSON at naglalapat ng mga tiyak na ayos, na lumilikha ng wastong JSON kapag posible.
- Sinusuri ang input at hinahanap ang mga karaniwang pagkakamali sa sintaks, kabilang ang mga ilegal na karakter, maling ayos ng mga bracket, at maling mga panipi sa string.
- Naglalapat ng mga ayos para sa mga madalas na pagkakamali—tulad ng pagdaragdag ng nawawalang panipi, pagtanggal ng mga sobra na kuwit, o pagtutuwid ng mga bracket.
- Nagbibigay ng naayos na JSON. Kadalasan, ang resulta ay handa nang i-parse o gamitin kaagad.
- Kung hindi kayang ayusin nang awtomatiko ang istruktura, ipapakita ang malinaw na error upang maayos mo ang iyong input.
Karaniwang Mga Error sa JSON at Paano Ito Ayusin
Narito ang mga karaniwang pagkakamali sa JSON na kayang ayusin ng tool na ito, kasama ang mga halimbawa para sa bawat isa:
Mga Key na Walang Panipi
Dapat ang mga susi ay nasa dobleng panipi.
{ pangalan: "Bob" }
{ "name": "Bob" }
Ayusin: Nagdadagdag ng dobleng panipi sa paligid ng mga object keys na walang panipi.
Gumamit ng Single Quotes
Tinatanggap lamang ng JSON ang doble na panipi para sa mga string.
{ 'role': 'admin' }
{ "role": "admin" }
Ayusin: Pinapalitan ang mga panaklong na solong kuwit ng dobleng kuwit para sa lahat ng mga string.
Mga Huling Kuwit
Hindi pinapayagan ang kuwit pagkatapos ng huling item.
{ "a": 1, "b": 2, }
{ "a": 1, "b": 2 }
Ayusin: Tinatanggal ang anumang huling kuwit.
Mga Hindi Tumutugmang o Hindi Nakasaradong Panaklong
Lahat ng panaklong at curly braces ay dapat maayos na magsara.
[1, 2, 3
[1, 2, 3]
Ayusin: Magdagdag ng nawawalang panaklong o braces.
Nawawala o Sobrang Kuwit
Dapat paghiwalayin ng isang kuwit lamang ang mga item sa array at object.
{ "a": 1 "b": 2 }
{ "a": 1, "b": 2 }
Ayusin: Magdagdag ng nawawalang kuwit, o alisin ang mga dobleng kuwit.
Mayroong Mga Linyang Komento
Hindi pinapayagan ng karaniwang JSON ang mga komento (tulad ng // o /* ... */).
{ "id": 1, // ID ng gumagamit "active": true }
{ "id": 1, "aktibo": totoo }
Ayusin: Tinatanggal ang mga linyang puna mula sa input.
Hindi Wastong Mga Format ng Numero
Mga payak na decimal na numero lamang ang wasto (walang NaN, Infinity, o hexadecimal).
{ "val": NaN }
{ "val": wala }
Ayusin: Pinapalitan ang mga maling numero ng null.
Hindi Naka-escape na Mga Karakter ng Kontrol
Ang mga karakter tulad ng bagong linya sa mga string ay kailangang i-escape.
{ "msg": "Linya1 Linya2" }
{ "msg": "Linya1\nLinya2" }
Ayusin: Tama ang pag-escape ng mga control character.
Doble na Mga Susi sa Obhekto
Nagdudulot ng kalituhan ang pagkakaroon ng magkaparehong susi sa iisang bagay.
{ "name": "A", "name": "B" }
{ "name": "B" }
Ayusin: Pinananatili lamang ang huling halaga para sa anumang duplikadong susi.
Maling Ayos ng Mga Array
Ang mga array ay dapat may mga panaklong at kuwit sa pagitan ng mga item.
[ 1 2 3 ]
[ 1, 2, 3 ]
Ayusin: Nagdagdag ng nawawalang kuwit sa pagitan ng mga elemento ng array.
Walang Laman ang Input o Puro Espasyo
Hindi maaaring walang laman ang JSON.
wala
Ayusin: Nagbabalik ng null para sa walang laman na input.
Halimbawa: Mula sa Sirang JSON Patungo sa Tamang Ayos
{ gumagamit: 'alice', id: 42, mga_papel: [admin, 'editor',] // dagdag na kuwit aktibo: totoo }Naayos na JSON Output
{ "user": "alice", "id": 42, "roles": [ "admin", "editor" ], "active": true }
Paano Gamitin ang Tool na Ito para Ayusin ang JSON
- I-paste o i-type ang iyong sirang JSON sa editor sa ibaba.
- I-click ang 'Ayusin' upang awtomatikong matukoy at maayos ang mga karaniwang error sa syntax.
- Suriin ang naayos na output at kopyahin ang iyong naitamang JSON.
Laging suriin ang naayos na JSON bago gamitin ito para sa mahahalagang datos—maaaring kailanganin ang manu-manong pag-aayos para sa mga kumplikado o lubhang nasirang input.
Mga Halimbawa ng Code para sa Pag-ayos ng JSON
Tingnan kung paano ayusin ang JSON sa iba't ibang wika ng programming.
const { jsonrepair } = require('jsonrepair');
const broken = '{ name: "Bob", age: 42, }';
const fixed = jsonrepair(broken);
console.log(fixed); // Now valid JSON!
let broken = "{ name: 'Bob', age: 42 }";
broken = broken.replace(/(['"])?:([\s]*)([^\s,\{\}\[\]":']+)/g, '"$1$3":');
try {
let obj = JSON.parse(broken);
console.log(obj);
} catch (e) {
console.error('Still broken:', e.message);
}
import dirtyjson
broken = "{ name: 'Bob', age: 42 }"
obj = dirtyjson.loads(broken)
print(obj)
import demjson3
broken = "{ name: 'Bob', age: 42 }"
obj = demjson3.decode(broken)
print(obj)
package main
import (
"fmt"
"github.com/robertkrimen/otto"
)
func main() {
vm := otto.New()
broken := "{ name: 'Bob', age: 42 }"
value, err := vm.Run("(" + broken + ")")
if err != nil {
fmt.Println("Cannot repair:", err)
} else {
obj, _ := value.Export()
fmt.Println(obj)
}
}
import org.json.JSONObject;
public class Main {
public static void main(String[] args) {
String broken = "{'name': 'Bob', 'age': 42}".replace(''', '"');
JSONObject obj = new JSONObject(broken);
System.out.println(obj);
}
}
using System;
using Newtonsoft.Json;
class Program {
static void Main() {
var broken = "{ name: 'Bob', age: 42 }".Replace("'", "\"");
try {
var obj = JsonConvert.DeserializeObject(broken);
Console.WriteLine(obj);
} catch (Exception ex) {
Console.WriteLine("Broken JSON: " + ex.Message);
}
}
}
<?php
$broken = "{ name: 'Bob', age: 42 }";
$fixed = preg_replace("/'([^"]*)'/", '"$1"', $broken);
$fixed = preg_replace('/([a-zA-Z0-9_]+):/', '"$1":', $fixed);
$obj = json_decode($fixed);
var_dump($obj);
# Using system call to npx jsonrepair
require 'open3'
broken = "{ name: 'Bob', age: 42 }"
fixed, _ = Open3.capture2("echo #{broken.inspect} | npx jsonrepair")
puts fixed
echo "{ name: 'Bob', age: 42 }" | npx jsonrepair
// Rust does not have a json repair crate yet. Pre-process string with regex to fix simple cases, then use serde_json.
import org.json.JSONObject
fun main() {
var broken = "{ name: 'Bob', age: 42 }".replace("'", "\"")
broken = Regex("([a-zA-Z0-9_]+):").replace(broken, ""$1":")
val obj = JSONObject(broken)
println(obj)
}
import { jsonrepair } from 'jsonrepair';
const broken = '{ name: "Bob", age: 42 }';
const fixed = jsonrepair(broken);
console.log(fixed);
var broken = "{ name: 'Bob', age: 42 }";
var fixed = broken.replaceAll("'", '"').replaceAllMapped(
RegExp(r'([a-zA-Z0-9_]+):'),
(m) => '"${m[ 1 ]}":',
);
print(fixed);
broken = "{ name: 'Bob', age: 42 }"
fixed = Regex.replace(~r/'/, broken, """)
fixed = Regex.replace(~r/(\w+):/, fixed, ""\\1":")
IO.puts(fixed)