PHP 서버에서 가져온 데이터 형식이라고 가정한다.
Local 에서 JSON 형식으로 데이터를 만들 이유는 없을 것이다.
public static string DeserializeNames()
{
jsonData = "{\"name\":[{\"last\":\"Smith\"},{\"last\":\"Doe\"}]}";
JavaScriptSerializer serializer = new JavaScriptSerializer();
JsonHelper myNames = serializer.Deserialize<JsonHelper>(jsonData);
return ser.Serialize(myNames);
}
//Class descriptions
public class name
{
public string last { get; set; }
}
public class JsonHelper
{
public List<name> { get; set; }
}
두개는 같이 사용 가능하다.
List<name> myNames = ser.Deserialize<List<name>>(jsonData);
JsonHelper myNames = ser.Deserialize<JsonHelper>(jsonData);
PHP 서버에서 JSON 을 가져오는 소스코드는
string GetJSONFromPHP(string url)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
try
{
WebResponse response = request.GetResponse();
using (Stream responseStream = response.GetResponseStream())
{
StreamReader reader = new StreamReader(responseStream, Encoding.UTF8, true);
return @reader.ReadToEnd().Trim();
}
}
catch (WebException ex)
{
WebResponse errorResponse = ex.Response;
using (Stream responseStream = errorResponse.GetResponseStream())
{
StreamReader reader = new StreamReader(responseStream, Encoding.GetEncoding("utf-8"));
String errorText = reader.ReadToEnd();
}
throw;
}
}
즉
jsonData = "{\"name\":[{\"last\":\"Smith\"},{\"last\":\"Doe\"}]}"; 대신에
using System.Web.Script.Serialization;
jsonData = GetJSONFromPHP(string url); 를 사용하면 된다.
dataGridView1 에다가 연결하는 방법은
JavaScriptSerializer serializer = new JavaScriptSerializer();
JsonHelper myNames = serializer.Deserialize<JsonHelper>(json);
dataGridView1.DataSource = myNames.name;
또는
JavaScriptSerializer serializer = new JavaScriptSerializer();
List<name> myNames = ser.Deserialize<List<name>>(jsonData);
dataGridView1.DataSource = myNames.ToArray();
로 하면 된다.
'C# > 통신' 카테고리의 다른 글
C# comboBox 에 Text, Value 추가 및 POST, JSON (0) | 2016.08.19 |
---|---|
C# comboBox 에 Text, Value 추가, 서버와 JSON 연동 (0) | 2016.08.19 |
C# Web 사이트에 PostData 저장하기 (0) | 2016.03.20 |
C# Web 접속 로그인 함수 만들기 (HttpWebRequest 방식) (0) | 2016.03.20 |
C# 웹(인터넷)에 있는 파일 읽어오기 (0) | 2016.01.22 |