2016-08-14 47 views
0

我有一個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); } 
} 

什麼的問題我碼?

+3

那麼我可能無法給你答案,但爲什麼你不嘗試使用任何在線工具首先反序列化它的字符串? – BraveHeart

+4

嘗試你的Json字符串在線驗證器,如'http:// pro.jsonlint.com',看看它是否有效。 – SushiHangover

+0

嘿,那裏,謝謝你回覆我的帖子傢伙!我在http://pro.jsonlint.com中粘貼了我的JSON對象,並且它是有效的。我在我的代碼中嘗試了其他方法,但我沒有成功...如果你想我可以發佈整個JSON對象? –

回答

2

你的JSON字符串無效。您需要用{和}括起來。

用JSON對象編碼使用前http://jsonlint.com/

{ 

    "field2_body": null, 
    "field3_body": null, 
    "field4_body": null, 
    "h_phrases": [{ 
     "h_phrase": "H222" 
    }, { 
     "h_phrase": "H411" 
    }, { 
     "h_phrase": "H361" 
    }, { 
     "h_phrase": "H315" 
    }] 

} 
+0

它會在第1行失敗,而不是64如果是這樣的話。 OP說它只是更大的JSON的片段。 – Crowcoder

+0

我在該網站中粘貼了我的JSON對象,並且它是有效的。如果你想我可以發佈整個JSON對象爲雅? –

+0

我已經解決了這個問題的傢伙,如果u想知道我是如何解決它只是告訴我,我會後我的吧:) –