728x90

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


로 하면 된다.    



728x90
블로그 이미지

Link2Me

,