Saat ini saya mengalami beberapa masalah. Saya menggunakan C # dengan Json.NET. Masalahnya adalah saya selalu mendapatkan:
{"Karakter yang tidak terduga ditemukan saat mengurai nilai: e. Path '', baris 0, posisi 0."}
Jadi cara saya menggunakan Json.NET adalah sebagai berikut. Saya memiliki Kelas yang harus disimpan. Kelasnya terlihat seperti ini:
public class stats
{
public string time { get; set; }
public string value { get; set; }
}
public class ViewerStatsFormat
{
public List<stats> viewerstats { get; set; }
public String version { get; set; }
public ViewerStatsFormat(bool chk)
{
this.viewerstats = new List<stats>();
}
}
Satu objek dari kelas ini akan diisi dan disimpan dengan:
File.WriteAllText(tmpfile, JsonConvert.SerializeObject(current), Encoding.UTF8);
Bagian penyimpanan berfungsi dengan baik dan file tersebut ada dan diisi. Setelah itu file tersebut akan dibaca kembali ke dalam kelas dengan:
try
{
ViewerStatsFormat current = JsonConvert.DeserializeObject<ViewerStatsFormat>(tmpfile);
//otherstuff
}
catch(Exception ex)
{
//error loging stuff
}
Sekarang pada baris = saat ini muncul pengecualian:
{"Karakter yang tidak terduga ditemukan saat mengurai nilai: e. Path '', baris 0, posisi 0."}
Saya tidak tahu mengapa ini datang. File json adalah sebagai berikut -> Click me im the JSON link
Apakah ada yang punya ide?
sumber
Jawaban:
Mungkin Anda tidak meneruskan JSON
DeserializeObject
.Sepertinya dari
File.WriteAllText(tmpfile,...
jenis itutmpfile
adalahstring
yang berisi jalur ke file.JsonConvert.DeserializeObject
mengambil nilai JSON, bukan jalur file - jadi gagal mencoba mengonversi sesuatu seperti@"c:\temp\fooo"
- yang jelas bukan JSON.sumber
Saya memecahkan masalah dengan alat online ini:
Kode sederhana:
sumber
check if the Json structure
OKE di C #?Saya mengalami kesalahan yang sama dalam solusi Xamarin.Android saya.
Saya memverifikasi bahwa JSON saya benar, dan melihat bahwa kesalahan hanya muncul ketika saya menjalankan aplikasi sebagai Rilis build.
Ternyata Linker menghapus pustaka dari Newtonsoft.JSON, menyebabkan JSON tidak diurai dengan benar.
Saya memperbaiki kesalahan dengan menambahkan Newtonsoft.Json ke pengaturan Ignore assemblies di Android Build Configuration (tangkapan layar di bawah)
Kode Parsing JSON
Tangkapan layar Visual Studio Mac
Tangkapan Layar Visual Studio
sumber
Saya juga mengalami kesalahan ini untuk tindakan API Web (.Net Core 3.0) yang mengikat
string
alih - alih keobject
atauJObject
. JSON benar, tetapi pengikat mencoba mendapatkan string dari struktur JSON dan gagal.Jadi, alih-alih:
Saya harus menggunakan yang lebih spesifik:
sumber
Dalam kasus saya, file yang berisi string JSON memiliki BOM . Setelah saya menghapus BOM, masalahnya teratasi.
sumber
Masalah ini terkait dengan Byte Order Mark di file JSON. File JSON tidak dikodekan sebagai data pengkodean UTF8 saat disimpan. Menggunakan
File.ReadAllText(pathFile)
memperbaiki masalah ini.Saat kita mengoperasikan data Byte dan mengubahnya menjadi string dan kemudian meneruskan ke JsonConvert.DeserializeObject, kita dapat menggunakan pengkodean UTF32 untuk mendapatkan string tersebut.
byte[] docBytes = File.ReadAllBytes(filePath);
string jsonString = Encoding.UTF32.GetString(docBytes);
sumber
Saya memiliki masalah yang sama dengan webapi di inti ASP.NET, dalam kasus saya itu karena aplikasi saya memerlukan otentikasi, kemudian memberikan anotasi
[AllowAnonymous]
dan berfungsi.sumber
Misalkan ini json Anda
jika Anda ingin deserialize tempat, modifikasi json seperti di bawah ini
kemudian coba deserialize ke kelas masing-masing dengan mengambil nilai tempat
sumber
Dalam skenario saya, saya mendapat pesan yang sedikit berbeda, di mana garis dan posisinya bukan nol.
Ini adalah jawaban Google teratas untuk pesan yang saya kutip.
Ini terjadi karena saya telah memanggil program dari baris perintah Windows, meneruskan JSON sebagai parameter.
Ketika saya meninjau args dalam program saya, semua tanda kutip ganda dihapus. Anda harus menyusunnya kembali.
Saya memposting solusi di sini . Meskipun itu mungkin bisa ditingkatkan dengan Regex.
sumber
Saya mengalami kesalahan serupa dan berpikir saya akan menjawabnya jika ada yang mengalami hal serupa. Saya mengulang direktori file json dan deserialisasi mereka tetapi mendapatkan kesalahan yang sama ini.
Masalahnya adalah ia mencoba mengambil file tersembunyi juga. Pastikan file yang Anda berikan adalah file .json. Saya rasa itu akan menangani teks juga. Semoga ini membantu.
sumber
Dalam kasus saya, saya mendapatkan kesalahan pada JsonConvert.PopulateObject () . Permintaan saya mengembalikan JSON yang dibungkus dengan sepasang tanda kurung tambahan '[]', membuat hasil saya berupa larik satu objek, bukan sekadar objek. Inilah yang saya lakukan untuk masuk ke dalam tanda kurung ini (hanya untuk jenis model itu):
sumber
Jika Anda menggunakan mengunduh data menggunakan url ... mungkin perlu menggunakan
sumber
Harap periksa model yang Anda bagi antara klien dan server sama. terkadang Anda mendapatkan kesalahan ini saat Anda tidak memperbarui versi Api dan mengembalikan model yang diperbarui, tetapi Anda masih memiliki yang lama. Terkadang Anda mendapatkan apa yang Anda serialisasi / deserialisasi bukanlah JSON yang valid.
sumber
Saya menghadapi pesan kesalahan serupa dalam bentuk Xamarin saat mengirim permintaan ke webApi untuk mendapatkan Token,
sumber
Ketika saya mengalami masalah yang sama, saya tetap dengan menggantikan
&mode=xml
untuk&mode=json
dalam permintaan.sumber