winter
winter

Reputation: 21

Unexpected character encountered while parsing value, JSON Object

I have an JSON object that looks like this:

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

But this is only a part of the JSON object because it is very big.

What I want to do is to access the h_phrase string values but when i try i get this error:

ERROR Unexpected character encountered while parsing value: {. Path '[0].h_phrases', line 64, position 7.

And this is my code:

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); }
}

What's the problem with my code?

Upvotes: 0

Views: 10443

Answers (1)

ADNnetPonzo
ADNnetPonzo

Reputation: 166

Your JSON string is invalid. You need to enclose it with { and }.

Use http://jsonlint.com/ before coding with JSON objects.

{

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

}

Upvotes: 2

Related Questions