2011-08-15 27 views
8

Chuỗi JSON của tôi trông như thế này. Xin lưu ý rằng nó có các ký tự thoát.Lỗi khi sử dụng Newtonsoft.Json để phân tích cú pháp chuỗi Json

string json = "\"{\\\"Status\\\":true,\\\"ID\\\":24501}\""; 

Khi tôi sử dụng phương pháp Parse như dưới đây tôi chạy vào một lỗi được nêu dưới đây:

JObject o = JObject.Parse(json); 

Lỗi đọc JObject từ JsonReader. Mục JsonReader hiện tại không phải là một đối tượng: String

Làm cách nào để loại bỏ lỗi này hoặc có phương pháp nào khác để phân tích cú pháp chuỗi json của tôi và tìm nạp các giá trị không?

+0

không trả lời điều này, m phải đối mặt với prob cùng – 1Mayur

Trả lời

4

Remove đầu tiên và cuối cùng có dấu ngoặc kép:

string json = "{\"Status\":true,\"ID\":24501}"; 

Xem định dạng Json here.

2

Dường như đối tượng của bạn được mã hóa kép. Hãy thử:

string json = "{\"Status\":true,\"ID\":24501}"; 
+4

Đó là chuỗi json là những gì tôi nhận được từ một API. Làm thế nào để loại bỏ các ký tự thoát? \ – SVI

+2

@SVI: Tôi đến muộn bên nhưng nếu ai cần, chỉ cần thay thế chúng bằng cách sử dụng một cái gì đó như 'json.Replace (" \\\\ "," \\ ")' – SolarBear

0

tại đây dạng nên một cái gì đó như thế này:

string jsonNew = @"{'Status': True,'ID': 24501 }"; 
1

Bạn cần một cái gì đó như thế này

json = json.Replace(@"\", string.Empty).Trim(new char[]{'\"'}) 
0

Như SolarBear nói trong comment của mình, vấn đề là đôi thoát .

Để có được định dạng thích hợp, như thế này:

string json = "{\"Status\":true,\"ID\":24501}"; 

Làm như thế này:

json = json.Replace("\\\\", "\\"); 
0

Đã vấn đề tương tự hiện nay. Giải pháp của tôi để này được chứa trong phương pháp mở rộng này (sử dụng c#):

public static class StringExtensions 
{ 
    public static string RemoveDoubleEncoding(this string text) 
    { 
     if(string.IsNullOrEmpty(text)) 
      return string.Empty; 
     var result = text.TrimStart('\"').TrimEnd('\"'); 
     result = result.Replace(@"\", string.Empty); 
     return result; 
    } 
} 
Các vấn đề liên quan