Search code examples
c#arraysjsonhttpwebrequest

c# HttpWebRequest response string array object parsing error


I want to parse http request response into myDATA class. But gives me error My codes under below. Im using also NEWtonsoft.Json

public class myDATA
{
        [JsonProperty("data1")]
        public string data1 { get; set; }
        [JsonProperty("data2")]
        public string data2 { get; set; }
}

string url = "https://www.domain/test.php";
HttpWebRequest httpWReq = (HttpWebRequest)WebRequest.Create(url);
ASCIIEncoding encoding = new ASCIIEncoding();
string postData = "key=" + HttpUtility.UrlEncode(txtLISANS.Text.ToString()) +
         "&hwid=" + HttpUtility.UrlEncode(Genel.HWID().ToString());
byte[] byteArray = Encoding.ASCII.GetBytes(postData);

byte[] data = encoding.GetBytes(postData);

httpWReq.Method = "POST";
httpWReq.ContentType = "application/x-www-form-urlencoded";
httpWReq.ContentLength = data.Length;
httpWReq.Accept = "application/json";

using (Stream stream = httpWReq.GetRequestStream())
{
       stream.Write(data, 0, data.Length);
}

HttpWebResponse response = (HttpWebResponse)httpWReq.GetResponse();
string responseString = new StreamReader(response.GetResponseStream()).ReadToEnd();


var datas = JsonConvert.DeserializeObject<myDATA>(responseString);
MessageBox.Show(datas.data1.ToString());
MessageBox.Show(datas.data2.ToString());`


RESPONSE JSON FROM WEB

[
    {
        "data1": "324234",
        "data2": "00331"
    }
]

Where is mistake ? dont shows data1 and data 2 I didnt find any solution. thanks for help.


Solution

  • Try to handle the json as a list of several objects:

    var datas = JsonConvert.DeserializeObject<List<myDATA>>(responseString);
    MessageBox.Show(datas[0].data1);
    MessageBox.Show(datas[0].data2);