Rumah > pembangunan bahagian belakang > C++ > Mengapakah Siri JSON.NET saya Menghasilkan Rentetan JSON Berkod Dua Kali?

Mengapakah Siri JSON.NET saya Menghasilkan Rentetan JSON Berkod Dua Kali?

Susan Sarandon
Lepaskan: 2025-01-24 21:41:09
asal
570 orang telah melayarinya

Why is my JSON.NET Serialization Producing Double-Encoded JSON Strings?

Masalah siri JSON.NET

Gambaran Keseluruhan Masalah

Apabila menggunakan kaedah JsonConvert.SerializeObject JSON.NET, objek disiri dua kali, menghasilkan respons JSON yang salah. Respons dibalut dengan petikan dan petikan terbenam dilepaskan, mengakibatkan JSON tidak sah.

Akar

Isu ini biasanya berlaku apabila mengembalikan rentetan daripada pengawal WebAPI yang telah disiri menggunakan JSON.NET. Pengawal kemudiannya juga mensirikan rentetan ke dalam rentetan JavaScript literal, menghasilkan bersiri berganda.

Penyelesaian

Untuk menyelesaikan masalah ini, kembalikan objek itu sendiri dan bukannya rentetan. Dengan melakukan ini, pengawal API akan mengendalikan penyirian berdasarkan parameter permintaan, membolehkan JSON.NET menyiri objek dengan betul. Ini menghapuskan siri berganda dan memastikan bahawa respons JSON yang dihasilkan adalah sah.

Contoh

<code class="language-csharp">// 原代码:双重序列化
public string GetFoobars() {
    var foobars = ...;
    return JsonConvert.SerializeObject(foobars);
}

// 更新后的代码:直接返回对象
public IEnumerable<Foobar> GetFoobars() {
    var foobars = ...;
    return foobars;
}</code>
Salin selepas log masuk

Dengan mengemas kini jenis pemulangan kepada jenis sebenar objek yang disiri, pengawal akan mensirikan hasil dengan sewajarnya, sekali gus menyelesaikan isu pesiri dua kali.

Maklumat tambahan

Untuk mendapatkan maklumat lanjut tentang pesirilan dalam WebAPI, sila rujuk sumber berikut:

Atas ialah kandungan terperinci Mengapakah Siri JSON.NET saya Menghasilkan Rentetan JSON Berkod Dua Kali?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan