我有一個JSON對象,看起來像這樣:意外的字符遇到,JSON對象
"field2_body":null,"field3_body":null,"field4_body":null,"h_phrases":[{"h_phrase":"H222"},{"h_phrase":"H411"},{"h_phrase":"H361"},{"h_phrase":"H315"}]
但這僅僅是JSON對象的一部分,因爲它是非常大的。
我想要做的就是訪問h_phrase字符串值,但是當我嘗試我得到這個錯誤:
ERROR Unexpected character encountered while parsing value: {. Path '[0].h_phrases', line 64, position 7.
這是我的代碼:
public class PhrasesData
{
[JsonProperty(PropertyName = "h_phrases")]
public string H_Phrases { get; set; }
}
public async void getPhrasesForSpecificProduct(string productId)
{
var baseUrl = "http://www.kemtest.com/rest/organisations";
var specProductUrl = baseUrl + "/" + activeOrganisationId + "/" + "products/" + productId;
try
{
var baseAddress = new Uri(specProductUrl);
var cookieContainer = new CookieContainer();
using (var handler = new HttpClientHandler() { CookieContainer = cookieContainer })
using (var client = new HttpClient(handler) { BaseAddress = baseAddress })
{
validToken = System.Net.WebUtility.UrlEncode(validToken);
cookieContainer.Add(baseAddress, new Cookie("access_token", string.Format(validToken)));
var result = client.GetAsync(specProductUrl).Result;
result.EnsureSuccessStatusCode();
if (result.IsSuccessStatusCode)
{
var content = await result.Content.ReadAsStringAsync();
var array = JArray.Parse(content);
PhrasesData[] myPhrasesData = JsonConvert.DeserializeObject<PhrasesData[]>(array.ToString());
if (myPhrasesData == null)
throw new JsonException();
string[] H_PhrasesArr = new string[myPhrasesData.Length];
for (int i = 0; i < myPhrasesData.Length; i++)
{
H_PhrasesArr[i] = myPhrasesData[i].H_Phrases;
var H_PhrasesVar = H_PhrasesArr[i];
Debug.WriteLine("God Damn PHRASES: " + H_PhrasesVar);
}
}
}
}catch (Exception ex) { Debug.WriteLine(@" ERROR {0}", ex.Message); }
}
什麼的問題我碼?
那麼我可能無法給你答案,但爲什麼你不嘗試使用任何在線工具首先反序列化它的字符串? – BraveHeart
嘗試你的Json字符串在線驗證器,如'http:// pro.jsonlint.com',看看它是否有效。 – SushiHangover
嘿,那裏,謝謝你回覆我的帖子傢伙!我在http://pro.jsonlint.com中粘貼了我的JSON對象,並且它是有效的。我在我的代碼中嘗試了其他方法,但我沒有成功...如果你想我可以發佈整個JSON對象? –