How can I parse a JSON string in C # Get error Cannot deserialize current JSON object (eg {"name": "value"})

I tried the following code but was unable to parse the json sting. when I parse I get this error:

Unable to deserialize current JSON object (eg {"name": "value"}) to type 'System.Collections.Generic.List`1

   HiddenField1.Value = "{\"AlertDataList\":[{\"header\":\"YTD Noresp 04/01/2010 - 01/31/2011 Created On 10/02/2013\",\"type\":\"High      \",\"NoResponse\":\"0\",\"NoResponsePct\":\"      0.00%\",\"Response\":\"1\",\"ResponsePct\":\"    100.00%\",\"All\":\"1\",\"accountperiodid\":\"11306\",\"navigateUrl\":\"windowpane://Insights.exe/HCI.Insights.Windows.Forms.Converted.FormFinalert…&responseType=NoResp&accountPeriodId=11306&alertType=High&hasResponses=All\",\"navigateResponsesUrl\":\"windowpane://Insights.exe/HCI.Insights.Windows.Forms.Converted.FormFinalert…responseType=NoResp&accountPeriodId=11306&alertType=High&hasResponses=Resp\",\"navigateNoResponsesUrl\":\"windowpane://Insights.exe/HCI.Insights.Windows.Forms.Converted.FormFinalert…D&responseType=NoResp&accountPeriodId=11306&alertType=High&hasResponses=No Resp\"},{\"header\":\"YTD Noresp 04/01/2010 - 01/31/2011 Created On 10/02/2013\",\"type\":\"Medium\",\"NoResponse\":\"0\",\"NoResponsePct\":\"      0.00%\",\"Response\":\"1\",\"ResponsePct\":\"    100.00%\",\"All\":\"1\",\"accountperiodid\":\"11306\",\"navigateUrl\":\"windowpane://Insights.exe/HCI.Insights.Windows.Forms.Converted.FormFinalert…esponseType=NoResp&accountPeriodId=11306&alertType=Medium&hasResponses=All\",\"navigateResponsesUrl\":\"windowpane://Insights.exe/HCI.Insights.Windows.Forms.Converted.FormFinalert…sponseType=NoResp&accountPeriodId=11306&alertType=Medium&hasResponses=Resp\",\"navigateNoResponsesUrl\":\"windowpane://Insights.exe/HCI.Insights.Windows.Forms.Converted.FormFinalert…responseType=NoResp&accountPeriodId=11306&alertType=Medium&hasResponses=No Resp\"},{\"header\":\"YTD Noresp 04/01/2010 - 01/31/2011 Created On 10/02/2013\",\"type\":\"All\",\"NoResponse\":\"0\",\"NoResponsePct\":\"      0.00%\",\"Response\":\"2\",\"ResponsePct\":\"    100.00%\",\"All\":\"2\",\"accountperiodid\":\"11306\",\"navigateUrl\":\"windowpane://Insights.exe/HCI.Insights.Windows.Forms.Converted.FormFinalert…D&responseType=NoResp&accountPeriodId=11306&alertType=All&hasResponses=All\",\"navigateResponsesUrl\":\"windowpane://Insights.exe/HCI.Insights.Windows.Forms.Converted.FormFinalert…&responseType=NoResp&accountPeriodId=11306&alertType=All&hasResponses=Resp\",\"navigateNoResponsesUrl\":\"windowpane://Insights.exe/HCI.Insights.Windows.Forms.Converted.FormFinalert…TD&responseType=NoResp&accountPeriodId=11306&alertType=All&hasResponses=No Resp\"}]}"


    public void AlertTable()
    {           
        List<alertMain> json = JsonConvert.DeserializeObject <List<alertMain>>((HiddenField1.Value).ToString());          

    }

public class alert
{
    [JsonProperty("header")]
    public string header { get; set; }

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

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

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

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

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

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

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

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

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

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

public class alertMain
{
    [JsonProperty("AlertDataList")]
    public List<alert> AlertDataList { get; set; }
}

      

+3


source to share


4 answers


Try changing the value of the hidden field from

HiddenField1.Value = "{\"AlertDataList\":[{...}]}"

      



to

HiddenField1.Value = "[{\"AlertDataList\":[{...}]}]"

      

0


source


You are deserializing to List<alertMain>

, but your JSON only contains one alertMain

.

Try:



alertMain json = JsonConvert.DeserializeObject<alertMain>((HiddenField1.Value).ToString());          

      

0


source


Answer from my comment.

You are trying to convert List<alertMain>

. alertMain

already contains a list.

Try to only use it alertMain

as it already contains a list of warnings.

0


source


You need to include json in List<IDictionary<string,string>>

, this will work.

PFB code.

public void AlertTable()
{
            var json = JsonConvert.DeserializeObject<RootObject>((HiddenField1.Value).ToString());

}

      

and you just create one class like below:

public class RootObject
{
    public List<IDictionary<string, string>> AlertDataList { get; set; }
}

      

0


source







All Articles