2014-05-05 32 views
0

嗨我試圖從http響應反序列化json,但我總是得到此解析值時遇到的意外字符:S.路徑錯誤。我能做些什麼來解決這個問題?解析值時遇到意外的字符:S.反序列化JSON時的路徑

這是我的代碼:

var client = new HttpClient(); 
     ///client.BaseAddress = new Uri("https://admin.cssholdings.com/api/v3/AuthenticateLivePOSAdmin/"); 
     client.DefaultRequestHeaders.Add("APIApplicationID", _clientId); 
     client.DefaultRequestHeaders.Add("APIApplicationKey", _clientSecret); 

     var PostData = new List<KeyValuePair<string, string>>(); 
     PostData.Add(new KeyValuePair<string, string>("strAdminUsername", adminusername)); 
     PostData.Add(new KeyValuePair<string, string>("strAdminPassword", password)); 
     PostData.Add(new KeyValuePair<string, string>("strAdminSecurityCode", securitycode)); 

     HttpContent content = new FormUrlEncodedContent(PostData); 
     string res = ""; 


     HttpResponseMessage response = client.PostAsync("https://admin.cssholdings.com/api/v3/AuthenticateLivePOSAdminLogin/", content).Result; 






     List<BO.AuthenticatedUser> authuser = JsonConvert.DeserializeObject<List<BO.AuthenticatedUser>>(response.Content.ToString()); 

那麼這裏我就小提琴手看到了JSON對象:

enter image description here

+0

你用什麼來處理JSON? JSON.NET?如果你打電話給它,並將它添加到標籤中,這將會很有幫助。另外 - 你粘貼整個JSON,因爲它是在小提琴手?從圖像看來,你似乎缺少一個左括號']'。此外,如果您可以將其粘貼爲文本而不是圖片,這樣做會很好。 –

+0

是json.net,我在jsonlint.com上檢查過json是有效的 –

回答

1

我有同樣的問題了。在我看來,問題是在json對象上使用ToString()方法,它返回DeserializeObject方法的格式不正確的字符串。 您可以嘗試使用這種方法(沒有爲我工作):

Newtonsoft.Json.Linq.JToken token = Newtonsoft.Json.Linq.JObject.Parse(jsonString); 
string templateMsgText = (string)token.SelectToken("yourKey"); 

相反,我所做的就是,我直接受理的JSON字符串在我的自定義類,並通過get訪問它的值;集。

我是這樣做的:

我的服務器端方法:

[WebMethod] 
public static string onSubmit(TemplateDataText jsonString) 
{ 
    return jsonString.templateMsgText; 
} 

這是我設計的,以獲得數據的自定義類:

public class TemplateDataText{ 
    public TemplateDataText(){} 

    [JsonProperty("text")] 
    public string templateMsgText { get; set; } 

    [JsonProperty("optionSelected")] 
    public string radioSelected { get; set; } 

} 

,這裏是我的JSON來通過ajax POST請求:

{"jsonString":{"text":"THIS IS THE TEXT THAT USER ENTERED","optionSelected":"2"}} 

使用這些設置我能夠在我的服務器端方法中獲得「文本」值,並能夠使用它進行進一步處理。

相關問題