Saya menggunakan parser .NET JSON dan ingin membuat serial file config saya agar dapat dibaca. Jadi alih-alih:
{"blah":"v", "blah2":"v2"}
Saya ingin sesuatu yang lebih baik seperti:
{
"blah":"v",
"blah2":"v2"
}
Kode saya kira-kira seperti ini:
using System.Web.Script.Serialization;
var ser = new JavaScriptSerializer();
configSz = ser.Serialize(config);
using (var f = (TextWriter)File.CreateText(configFn))
{
f.WriteLine(configSz);
f.Close();
}
c#
.net
json
javascriptserializer
Stephen Kennedy
sumber
sumber
Kode sampel yang lebih pendek untuk perpustakaan Json.Net
sumber
Jika Anda memiliki string JSON dan ingin "mem-prettify" itu, tetapi tidak ingin membuat cerita bersambung ke dan dari tipe C # yang dikenal, maka yang berikut melakukan trik (menggunakan JSON.NET):
sumber
JsonPrettify("null")
JsonPrettify("\"string\"")
Versi terpendek untuk membuat cantik JSON yang ada: (edit: using JSON.net)
Memasukkan:
Keluaran:
Untuk mencetak objek dengan cantik:
sumber
JToken
bukanJObject
. Ini berfungsi dengan objek atau array, karenaJToken
merupakan kelas leluhur untuk keduanyaJObject
danJArray
.Oneliner menggunakan
Newtonsoft.Json.Linq
:sumber
Anda dapat menggunakan metode standar berikut untuk mendapatkan format Json
JsonReaderWriterFactory.CreateJsonWriter (Stream stream, Encoding encoding, bool memilikiStream, bool indent, string indentChars)
Hanya setel "indent == true"
Coba sesuatu seperti ini
Perhatikan baris Anda
Untuk beberapa jenis xml-serializers Anda harus menggunakan InvariantCulture untuk menghindari pengecualian selama deserialisasi pada komputer dengan pengaturan Regional yang berbeda. Misalnya, format ganda atau DateTime yang tidak valid terkadang menyebabkan mereka.
Untuk deserialisasi
Terima kasih!
sumber
DataContractJsonSerializer
dalam perakitanSystem.Runtime.Serialization v.4.0.0.0
, tidak ada penggunaan eksplisitCurrentCulture
. Satu-satunya penggunaan budaya adalahCultureInfo.InvariantCulture
di kelas dasarXmlObjectSerializer
, metode internalTryAddLineInfo
.Semua ini dapat dilakukan dalam satu baris sederhana:
sumber
Berikut ini adalah solusi menggunakan perpustakaan System.Text.Json Microsoft :
sumber
Pertama saya ingin menambahkan komentar di bawah posting Duncan Smart, tapi sayangnya saya belum punya reputasi yang cukup untuk meninggalkan komentar. Jadi saya akan mencobanya di sini.
Saya hanya ingin memperingatkan tentang efek samping.
JsonTextReader secara internal mem-parsing json ke dalam JTokens yang diketik dan kemudian membuat serial kembali.
Misalnya jika JSON asli Anda
Setelah cantik Anda dapatkan
Tentu saja kedua string json adalah setara dan akan deserialize ke objek yang sama secara struktural, tetapi jika Anda perlu mempertahankan nilai string asli, Anda harus mempertimbangkan ini.
sumber
Menggunakan
System.Text.Json
setJsonSerializerOptions.WriteIndented = true
:sumber
netcoreapp3.1
sumber
Ini berhasil untuk saya. Dalam kasus seseorang mencari versi VB.NET.
sumber
Kode di bawah ini berfungsi untuk saya:
sumber