2016-08-14 113 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想知道我是如何解决它只是告诉我,我会后我的吧:) –