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.
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.
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.
<code class="language-csharp">// 原代码:双重序列化 public string GetFoobars() { var foobars = ...; return JsonConvert.SerializeObject(foobars); } // 更新后的代码:直接返回对象 public IEnumerable<Foobar> GetFoobars() { var foobars = ...; return foobars; }</code>
Dengan mengemas kini jenis pemulangan kepada jenis sebenar objek yang disiri, pengawal akan mensirikan hasil dengan sewajarnya, sekali gus menyelesaikan isu pesiri dua kali.
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!