{
"response":{
"code":200,
"message":"OK",
"data":[
{
"user":{
"id":"564564",
"firstName":"XYZ",
"lastName":"J.",
"photo":"https:\/\/img-s.example.com\/userpix_thumbs\/48935_12545435354.png",
"gender":"male",
"homeCity":"Algonquin, IL",
"contact":{
}
},
"lastCheckin":34634543532
},
{
"user":{
"id":"3254353",
"firstName":"PQR",
"lastName":"Black",
"photo":"https:\/\/img-s.example.com\/userpix_thumbs\/TJZE1FSTWBE5JA11.jpg",
"gender":"male",
"homeCity":"Chicago, IL",
"relationship":"friend",
"contact":{
}
},
"lastCheckin":3534523422345
}
]
}
}
위 응답은 JSON
입니다. 위의 응답에서 "사용자"콘텐츠를 구문 분석 할 수 없습니다. firstName
및 lastName
필드 대신 항상 0
을 반환합니다. 도와주세요. 아래는 제 코드입니다.JSON에서 구문 분석 응답
FSQAPIRec_CheckIn_Results g1 = new FSQAPIRec_CheckIn_Results();
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
StreamReader sr = new StreamReader(resp.GetResponseStream());
string json = sr.ReadToEnd();
sr.Close();
g1 = JSONHelper.Deserialise<FSQAPIRec_CheckIn_Results>(json);
if (g1.response.message == "OK")
{
List<FSQCheckIn_Data> obj = g1.response.data;
for (int i = 0; i < obj.Count(); i++)
{
List<FSQCheckIn_UserData> obj1 = obj[i].user;
for (int j = 0; j < obj1.Count(); j++)
lbl_Resent_Chechin.Text += (j + 1) + ") " + obj1[j].firstName + " " + obj1[j].lastName + "<br/><br/>";
}
}
public class JSONHelper
{
public static T Deserialise<T>(string json)
{
using (var ms = new MemoryStream(Encoding.Unicode.GetBytes(json)))
{
var serialiser = new DataContractJsonSerializer(typeof(T));
return (T)serialiser.ReadObject(ms);
}
}
public static string Serialize<T>(T obj)
{
DataContractJsonSerializer serializer = new DataContractJsonSerializer(obj.GetType());
using (MemoryStream ms = new MemoryStream())
{
serializer.WriteObject(ms, obj);
return Encoding.Default.GetString(ms.ToArray());
}
}
[Serializable]
[DataContract]
public class FSQAPIRec_CheckIn_Results
{
[DataMember]
public RecCheckIn_Response response { get; set; }
}
[Serializable]
[DataContract]
public class RecCheckIn_Response
{
[DataMember]
public string code { get; set; }
[DataMember]
public string message { get; set; }
[DataMember]
public List<FSQCheckIn_Data> data { get; set; }
}
[Serializable]
[DataContract]
public class FSQCheckIn_Data
{
[DataMember]
public List<FSQCheckIn_UserData> user { get; set; }
}
[Serializable]
[DataContract]
public class FSQCheckIn_UserData
{
[DataMember]
public string firstName { get; set; }
[DataMember]
public string lastName { get; set; }
[DataMember]
public string photo { get; set; }
}
그것은 잘 관련되지 않을 수도 있습니다,하지만 당신이 여기에 세 가지 다른 인코딩을 사용하고 있는지 잘되지이다 - 특히, UTF-8의 (a 위해 StreamReader를 구성하는 기본), Encoding.Unicode (직렬화에) 및 Encoding.Default (직렬화)입니다. –
무엇을 이미 시도 했습니까? 디버거에서 실행 했습니까? –
0 또는 0 요소를 반환하고 있습니까? – Hammerstein