posted by 방랑군 2012. 1. 9. 03:00

상품등록 화면을 ajax로 처리하다 보니
데이터의 자료구조를 잘 만들어야 할 필요가 있다.

그래서 json 의 사용..

배열과 크게 다를건 없지만 걍 객체지향 냄새가 좀더 난다는거..
그리고 배열 요소(인덱스) 처리하느라 골머리 썩지 않는 점은 참 좋다. 직관적이기도 하고..

그런데 json 데이터를 객체화 하기 위해 자바스크립트의 eval! 메소드를 사용해야 하는데..

이게 악성코드를 실행시킬 위험이 있단다.

그래서

json.org/json2.js 배포파일이 필요하게 됬다.

더 상세한건
http://blog.outsider.ne.kr/257 요분의 포스팅이 참 도움이 된다.
땡큐베리 감사...

어찌됬든
eval!(o.responseText) 가 아닌 JSON.parse(o.responseText)로 객체화 하자

'PP > JSON' 카테고리의 다른 글

JSON Text를 JSON Object로 변환하기  (0) 2012.01.09
Json / JQuery (Ajax)/ Asp.net 3가지를 연동하여 데이터 가져오기  (0) 2012.01.07
JSON 개요 및 예제  (0) 2012.01.04
DATASET - > JSON  (1) 2012.01.04
JSON.NET  (0) 2012.01.04
posted by 방랑군 2012. 1. 9. 02:59
JSON 은 써보면 써볼수록 유용한 것 같다. 간결하고 편하고 직관적이다. 어쨌든 JSON Text를 Object로 변환해야 할 때가 있다. 여기서 JSON Text라는 것은 형태는 JSON의 형태이지만 자바스크립트에서 이걸 Object가 아닌 그냥 텍스트로만 인식하고 있다는 것이다. 이걸 Object로 바꾸어야만 그안의 값을 불러다가 사용할 수 있다.

가장 흔한 예가 Ajax를 사용할 경우이다. Ajax로 호출을 하고 결과값으로 받은 req.responseText로 JSON을 받았을 경우에는 그냥 Text이기 때문에 Object로 변환해 주어야 한다.

{ id:'Outsider', sex:'male' }

Ajax에서 리턴받을 JSON의 형태가 위와 같이 되어 있을 경우에는 

?
1
2
var obj = eval("("+returnValue.responseText+")");
alert(obj.id);  // Outsider

위의 코드처럼 eval을 해주면 JSON 오브젝트로 변환할 수 있다.

[ { id:'Outsider', sex:'male' },
  { id:'Zziuni', sex:'male' } ]

JSON이 위의 형태처럼 배열로 되어 있을 경우에는

?
1
2
var obj = eval(returnValue.responseText);
// -> { id:"Outsider", sex:"male" }

그냥 eval을 해주면 JSON 오브젝트로 변환할 수 있다.

다만 이렇게 변환할 경우 eval()은 빠르기는 하지만 단순히 그안의 스트링을 그대로 실행시켜 주는 것이기 때문에 리턴값으로 자바스크립트 명령문이 온다면 그대로 실행시켜버리기 때문에 보안이슈가 발생할 수 있다.  

이렇게 리턴받은 소스를 신뢰하기 어려울 때는 JSON.org 에서 제공하는 JSON parser을 사용해야 한다. JSON parser는 오직 JSON text만 받아들이고 다른 스크립트는 거부하고 eval()만큼이나 빠르다.

?
1
2
var obj = JSON.parse(returnValue.responseText);
// -> { id:"Outsider", sex:"male" }

JSON.parse()의 목적대로 JSON 텍스트 외에는 거부해야하기 때문에 JSON문법을 정확히 지켜주지 않으면 SyntaxError 예외가 던져진다. 그렇기 때문에 키와 값을 모두 쌍따옴표(")로 묶어주는 문법을 정확하게 지켜주어야 한다.(물론 이 경우는 값들이 스트링이기 때문에 쌍따옴표로 묶어주는 것입니다.) 아래처럼....

{ "id":"outsider", "sex":"male" }

여기서 JSON.parse()를 사용하기 위해서는 Douglas Crockford 가 만든 json2.js 가 필요하다. json2.js는 더글라스 크록포드가 JSON의 편리한 사용을 위해 만든 JSON API의 새버전이다.(그래서 2가 붙어있다.) 이 API에는 2개의 메서드가 들어있는데 JSON.stringify()와 JSON.parse()이다. JSON.stringify()는 JSON.parse()와는 완전히 반대로 JSON 객체를 주면 JSON 텍스트로 만들어서 준다. 필요할때 갖다 쓰면 된다. (John Resig 이 이전버전보다 새버전의 API가 훨씬 좋다고 꼭 이걸 쓰란다.)

'PP > JSON' 카테고리의 다른 글

JSON 의 eval() 함수 사용의 문제  (0) 2012.01.09
Json / JQuery (Ajax)/ Asp.net 3가지를 연동하여 데이터 가져오기  (0) 2012.01.07
JSON 개요 및 예제  (0) 2012.01.04
DATASET - > JSON  (1) 2012.01.04
JSON.NET  (0) 2012.01.04
posted by 방랑군 2012. 1. 7. 15:41

출처 :  http://najsulman.tistory.com/591

 휴우~ 각고의 노력끝에 드뎌 성공~!!!


휠자가 하려고 했던 것은 다음과 같다.
1. ActiveX에서 마우스 클릭 시 이벤트를 ClientScript에 통지!!
2. 통지 받으면 Ajax로 서버딴에 DB질의를 요청
3. 서버쪽에서는 웹서비스로 DB에 질의 요청 후 받은 데이터를 JSON으로 변환
4. 기다리고 있던 ClientScript에서는 JSON으로 질의에 대한 응답을 받음

현재 설명하려고 하는 내용은 Ajax로 서버딴에 DB질의 요청 및 받은 데이터를 JSON으로 변환하는 것이에용

ClientScript에서 Ajax로 질의 요청 하는 Ajax구문
<script type ="text/javascript" language="javascript" for="NVS" EVENT="RcvSelectedCamera(CameraCode)">
$.ajax({
type: "post",
url: "Tmp.asmx/HelloPreset",
data: "{" + CameraCode + "}",
data: "{}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(data){
alert('success - ' + data.d);
},
error: function(result){
alert('error - ' + result.status + ' ' + result.statusText);
}

});

</script>


JSON으로 변환
- 웹서비스쪽에서 JSON으로 변환해줌

DataSet을 JSON으로 변환해줄 클래스 정의


namespace ICSService
{
public class DataSetConverter : JavaScriptConverter
{
public override IEnumerable<Type> SupportedTypes
{
//Define the DataTable as a supported type.
get { return new ReadOnlyCollection<Type>(new List<Type>(new Type[] { typeof(DataSet) })); }
}
public override IDictionary<string, object> Serialize(object obj, JavaScriptSerializer serializer)
{
Dictionary<string, object> dtDic = new Dictionary<string, object>();
DataSet ds = obj as DataSet;
foreach (DataTable dt in ds.Tables)
{
// Create the representation.
Dictionary<string, object> rowDic = new Dictionary<string, object>();
int i = 0;
foreach (DataRow row in dt.Rows)
{
//Add each entry to the dictionary.
Dictionary<string, object> colDic = new Dictionary<string, object>();
foreach (DataColumn col in row.Table.Columns)
{
colDic.Add(col.ColumnName, row[col]);
}
rowDic.Add("row" + (i++).ToString(), colDic);
}
dtDic.Add(dt.TableName, rowDic);
}
return dtDic;
}
public override object Deserialize(IDictionary<string, object> dictionary, Type type, JavaScriptSerializer serializer)
{
if (dictionary == null)
throw new ArgumentNullException("dictionary");
if (type == typeof(DataTable))
{
// Create the instance to deserialize into.
DataTable list = new DataTable();
// Deserialize the ListItemCollection's items.
ArrayList itemsList = (ArrayList)dictionary["Rows"];
for (int i = 0; i < itemsList.Count; i++)
list.Rows.Add(serializer.ConvertToType<DataRow>(itemsList[i]));
return list;
}
return null;
}
}
}
DataSetConverter 클래스의 사용

[WebMethod]
public string SelectPresetByCameraCode_Web(string[] CameraCode)
{
DataSet ds = (DataSet)XmlHelper.ExcuteXml(Server.MapPath(PRESET_XML), "SelectPresetByCameraCode_Web", CameraCode);
JavaScriptSerializer jss = new JavaScriptSerializer();
DataSetConverter dsc = new DataSetConverter();
IDictionary<string, object> retVal = dsc.Serialize(ds, jss);
string result = jss.Serialize(retVal);
return result;
}


'PP > JSON' 카테고리의 다른 글

JSON 의 eval() 함수 사용의 문제  (0) 2012.01.09
JSON Text를 JSON Object로 변환하기  (0) 2012.01.09
JSON 개요 및 예제  (0) 2012.01.04
DATASET - > JSON  (1) 2012.01.04
JSON.NET  (0) 2012.01.04
posted by 방랑군 2012. 1. 4. 13:06
충처 : http://kimstar.pe.kr/blog/74

1. 개요


1) JSON : JavaScript Object Notation
2) lightweight data 교환 형식.
3) 사람이 읽고 쓰기 쉬움.
4) 기계가 파싱하고 생성하기 쉬움. 
 

2. 일반사항


1) The official Internet media type for JSON : application/json
2) 확장자 : .json
3) Structured dat를 네트워크 상에서 주고 받을때 주로 사용 (주로 Ajax 등에서)
4) subset of Javascript : specifically, Standard ECMA-262 3rd Edition?December 1999
6) json.org : JSON 바인딩에 대한 다양한 자료 제공
7) Yahoo / Google : JSON 지원 

3. 특징


1) JavaScript의 Array 문법으로 데이터 구조를 기술하는 방법으로 XML이 가지는 유연성과 구조적 데이터 표현기능을 확보하면서, XML이 가진 오버헤드를 줄이는 방법으로 사용되고 있다.
2) 클라이언트에서는 JavaScript의 eval()로 객체로 만들어 사용, 별도의 파싱 절차가 필요없음 (클라이언트에서 처리 퍼포먼스 높음)
3) 서버측 JSON 파싱 모듈은 거의 모든 언어별로 지원(Java, C, ActionScript, Delphi, Ruby, Perl, CAMAL등)
4) 클라이언트/서버측 모두 송신은 문자열 조립으로 처리
5) XML이 표현하는 구조적인 정보 모두 표현가능
6) 송수신 데이터로 XML를 사용하는 것에 비해 훨씬 빠르고, 간편하다.
7) language-independent text format, 대부분의 브라우저, 언어에서 지원된다.
8) 주로 XmlHttp 로 script text를 수신하여 다음과 같은 코드로 객체로 build 한다. (예제 : myObject = eval("return " + json_data); )


 

4. 데이타 타입


1) Object
  - 중괄호({})로 시작하고 끝남
  - member : 문자열과 값으로 구성되어 있고 콜론( 으로 구분, 각 멤버들은 콤마(,)로 구분
  - value : 값은 object, string, number, array, true, false, null 사용 가능

사용자 삽입 이미지
사용자 삽입 이미지

2) String
  - 문자열은 쌍따옴표(")로 둘러 쌓여야 함
  - Unicode character 또는 일반적인 escape 문자(\", \\, \/, \b, \f, \n, \r, \t, \u four-hex-digits)를 포함한다.
사용자 삽입 이미지

3) Number
  - integer, real or floating point

사용자 삽입 이미지

4) Array
  - an ordered sequence of values
  - 대괄호([])로 시작하고 끝나며 각 값은 콤마(,)로 구분

사용자 삽입 이미지

5) true
6) false
7) null


 

5. 예제 #1


1) 사람을 나타내는 JSON 예제

(Language : javascript)
  1.   {
  2.     "firstName""John",
  3.     "lastName""Smith",
  4.     "address"{
  5.      "streetAddress""21 2nd Street",
  6.      "city""New York",
  7.      "state""NY",
  8.      "postalCode"10021
  9.     },
  10.     "phoneNumbers"[
  11.      "212 555-1234",
  12.      "646 555-4567"
  13.     ]
  14.   }



2) 설명
  - 성,이름,주소,전화라는 각 object는 Key:Value로 구성
  - 각 Object는 ,로 구분
  - 이름의 Value는 String
  - 주소의 Value는 Object
  - 전화의 Value는 배열


3) 사용법
  - var p = eval('(' + contact + ')');
  - p.firstName, p.address.city, p.phoneNumbers[0]

6. 예제 #2

1) 그림을 나타내는 JSON 예제

(Language : javascript)
  1.   {
  2.   "Image"{
  3.     "Width":800,
  4.     "Height":600,
  5.     "Title":"View from 15th Floor",
  6.     "Thumbnail":{
  7.    "Url":"http:/\/scd.mm-b1.yimg.com\/image\/481989943",
  8.    "Height"125,
  9.    "Width""100"
  10.     },
  11.     "IDs":[ 11694323438793 ]
  12.     }
  13.   }



2) 설명
  - 출처 : rfc4627
  - 예제에서 Image는 최상위 object이고 모든 다른 데이터들은 이 object의 멤버.
  - Width, Height, Title는 숫자와 문자열 데이타를 포함하고 있는 기본적인 멤버.
  - Thumbnail은 Url, Height, Width를 멤버로 포함하고 있는 중첩 object.
  - IDs는 숫자 값을 가지고 있는 array.
  - Url 문자열 값에서 슬래쉬 가 escape 됨에 주의


 

7. 예제 #3


 1) 메뉴를 나타내는 JSON 예제

(Language : javascript)
  1.   {"menu"{
  2.     "id""file",
  3.     "value""File",
  4.     "popup"{
  5.    "menuitem"[
  6.      {"value""New""onclick""CreateNewDoc()"},
  7.      {"value""Open""onclick""OpenDoc()"},
  8.      {"value""Close""onclick""CloseDoc()"}
  9.    ]
  10.     }
  11.   }}


 2) 위와 동일한 XML

(Language : xml)
  1.   <menu id="file" value="File">
  2.     <popup>
  3.    <menuitem value="New" onclick="CreateNewDoc()" />
  4.    <menuitem value="Open" onclick="OpenDoc()" />
  5.    <menuitem value="Close" onclick="CloseDoc()" />
  6.     </popup>
  7.   </menu>



 

8. PHP


1) 5.2버전부터 json_encode 함수 지원
2) 서버에서 JSON 포멧으로 리턴하는 예제

(Language : php)
  1. <?php
  2.   $popups = array();
  3.   $popups[] = 'This is the first popup';
  4.   $popups[] = 'This is the second popup';
  5.   $return['popups'] = $popups;
  6.   $return['result'] = 'success';
  7.   // output correct header
  8.   $isXmlHttpRequest = (isset($_SERVER['HTTP_X_REQUESTED_WITH'])) ?
  9.     (strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') ? true : false:false;
  10.   ($isXmlHttpRequest) ? header('Content-type: application/json') : header('Content-type: text/plain');
  11.   echo json_encode($return);
  12. ?>


3) ob_XXX 함수를 사용하여 JSON 포멧을 리턴하는 예제

(Language : php)
  1. <?php
  2. // start capturing output buffer
  3. ?>
  4.  
  5. <p>An HTML paragraph</p>
  6.  
  7. <?php
  8. // Flush any HTML output
  9. $return['html'] = ob_get_contents();
  10.  
  11. $return['result'] = 'success';
  12.  
  13. header('Content-type: application/json');
  14. echo json_encode($return);
  15. ?>


 


9. C#


1) JSON_checker : http://www.raboof.com/projects/jsonchecker/ 
2) Jayrock : http://jayrock.berlios.de/ 
3) Json.NET - LINQ to JSON : http://james.newtonking.com/projects/json-net.aspx 
4) JSONSharp : http://code.google.com/p/jsonsharp/ 
5) LitJSON : http://litjson.sourceforge.net/ 
6) JSON for .NET : http://sourceforge.net/projects/csjson 
7) JsonFx : http://jsonfx.net/download/ 
8) JsonExSerializer : http://code.google.com/p/jsonexserializer/ 

  - Serialize to String

(Language : csharp)
  1. MyClass myClass = new MyClass();
  2. string result = serializer.Serialize(myClass);


  - Serialize to TextWriter

(Language : csharp)
  1. MyClass myClass = new MyClass();
  2. TextWriter writer = new TextWriter(new FileStream("somefile.jsx", FileMode.Create));
  3. serializer.Serialize(myClass, writer);
  4. writer.Close();


  - Deserialize from String

(Language : csharp)
  1. string result = ... Populate the string with previously serialized content 
  2. MyClass myClass = (MyClass) serializer.Deserialize(result);


  - Deserialize from TextReader

(Language : csharp)
  1. TextReader reader = new TextReader(new FileStream("somefile.jsx", FileMode.Open));
  2. MyClass myClass = (Myclass) serializer.Deserialize(reader);
  3. reader.Close();


  - JsonExSerializer 비교 결과 (내 노트북에서의 시험 결과임. Pentium M 1.6GHz, 1GB RAM)

   -----------------------------------------------------
   Serialization Performance Test
   Serializer Type: BinarySerializer
   File Size      : 19128 bytes
   Iterations     : 2500
   Object Count   : 100
   Total Time     : 10472ms
   Avg Time       : 4.189ms per iteration
   -----------------------------------------------------
   Deserialization Performance Test
   Serializer Type: BinarySerializer
   File Size      : 19128 bytes
   Iterations     : 2500
   Object Count   : 100
   Total Time     : 4456ms
   Avg Time       : 1.782ms per iteration
   -----------------------------------------------------
   Serialization Performance Test
   Serializer Type: XmlSerializer
   File Size      : 31565 bytes
   Iterations     : 2500
   Object Count   : 100
   Total Time     : 9559ms
   Avg Time       : 3.824ms per iteration
   -----------------------------------------------------
   Deserialization Performance Test
   Serializer Type: XmlSerializer
   File Size      : 31565 bytes
   Iterations     : 2500
   Object Count   : 100
   Total Time     : 3981ms
   Avg Time       : 1.592ms per iteration
   -----------------------------------------------------
   Serialization Performance Test
   Serializer Type: JsonExSerializer
   File Size      : 31989 bytes
   Iterations     : 2500
   Object Count   : 100
   Total Time     : 16033ms
   Avg Time       : 6.413ms per iteration
   -----------------------------------------------------
   Deserialization Performance Test
   Serializer Type: JsonExSerializer
   File Size      : 31989 bytes
   Iterations     : 2500
   Object Count   : 100
   Total Time     : 22302ms
   Avg Time       : 8.921ms per iteration
   -----------------------------------------------------


 

9. Javascript


 1) http://www.json.org/json.js  - 최신버전 json.js 다운받기
 2) http://www.json.org/json2.js  - JSON2 릴리즈. (Object.prototype 에 속성을 추가하지 않도록 수정되었음)


10. 출처


 1) http://en.wikipedia.org/wiki/JSON 
 2) http://www.0bin.net/moniwiki/wiki.php/p ··· F03_json 
 3) http://www.json.com 
 4) http://json.org/ 
 5) http://www.ietf.org/rfc/rfc4627.txt?number=4627 
 6) http://2.0business.kr/wiki/wiki.php/JSON 
 7) http://steelleg.tistory.com/169 


11. 첨부




 

'PP > JSON' 카테고리의 다른 글

JSON 의 eval() 함수 사용의 문제  (0) 2012.01.09
JSON Text를 JSON Object로 변환하기  (0) 2012.01.09
Json / JQuery (Ajax)/ Asp.net 3가지를 연동하여 데이터 가져오기  (0) 2012.01.07
DATASET - > JSON  (1) 2012.01.04
JSON.NET  (0) 2012.01.04
posted by 방랑군 2012. 1. 4. 04:32
출처 :

http://weblogs.asp.net/navaidakhtar/archive/2008/07/08/converting-data-table-dataset-into-json-string.aspx

 

Converting Data Table / Dataset Into JSON String

JSON (Java Script Object Notation), is a light weight, easily understandable to read and write string. It is also easily parse-able by machine.

JSON is introduced on two structues

A collection (key/value pair)

And ordered list of values.

I have not covered this topic in detail. Detailed analysis is stated on http://www.json.org/.

I am presenting a helper function (in C#) fordevelopers for fast parsing on datatable / dataset into JSON String,and access it on client-side.

public static string GetJSONString(DataTable Dt)

{

string[] StrDc = new string[Dt.Columns.Count];

string HeadStr = string.Empty;

for (int i = 0; i < Dt.Columns.Count; i++)

{

StrDc[i] = Dt.Columns[i].Caption;

HeadStr += "\"" + StrDc[i] + "\" : \"" + StrDc[i] + i.ToString() + "¾" + "\",";

}

HeadStr = HeadStr.Substring(0, HeadStr.Length - 1);

StringBuilder Sb = new StringBuilder();

Sb.Append("{\"" + Dt.TableName + "\" : [");

for (int i = 0; i < Dt.Rows.Count; i++)

{

string TempStr = HeadStr;

Sb.Append("{");

for (int j = 0; j < Dt.Columns.Count; j++)

{

TempStr = TempStr.Replace(Dt.Columns[j] + j.ToString() + "¾", Dt.Rows[i][j].ToString());

}

Sb.Append(TempStr + "},");

}

Sb = new StringBuilder(Sb.ToString().Substring(0, Sb.ToString().Length - 1));

Sb.Append("]};");

return Sb.ToString();

}

Here, Dt is the datatable, and it returns JSON formatted string.

For detailed porcedure on how to access this string on client side, please refer to this link Exposing Webservices to Client-Side because I don't like to do task repetition.

Please donot forget to convert to JSON string to JSON Object using

var JObject = eval('(' + JSONString + ')');

in Javascript JObject have all characteristics of JSON object, through which you can Use JObject by iterrating or what so ever.

e.g., you can use your JObject as

for(var i = 0; i < JObject .Employees.length; i++)

{

var val1 = JObject.Employees[i].EmployeeID;

var val2 = JObject.Employees[i].NationalIDNumber;

var val3 = JObject.Employees[i].Title;

var val4 = JObject.Employees[i].BirthDate;

var val5 = JObject .Employees[i].HireDate ;

}

Please note that I am querieng data from AdventurWorksDB SQL Sample Database (Table: Employee).

I hope this article will be helpful for you.

Any Questions / Queries ??

Regards,

Naveed Akhtar




'PP > JSON' 카테고리의 다른 글

JSON 의 eval() 함수 사용의 문제  (0) 2012.01.09
JSON Text를 JSON Object로 변환하기  (0) 2012.01.09
Json / JQuery (Ajax)/ Asp.net 3가지를 연동하여 데이터 가져오기  (0) 2012.01.07
JSON 개요 및 예제  (0) 2012.01.04
JSON.NET  (0) 2012.01.04
posted by 방랑군 2012. 1. 4. 04:30
http://json.codeplex.com/

 
DataSet <-> Json 파일

최근 이슈가 되고 있는 Json(Javascript Object Notation)은 텍스트 타입의 데이터 처리 방식에 있어서 XML을 대체할 만한 또 다른 형태이다.

장점이라면 XML DOM 호출에 비해 처리 속도가 뛰어나며, Cross-site Domian에서도 사용이 가능하다.

 

현재 관리하고 있는 사이트를 좀 더 가볍게 하기 위해 기존 XML이나 DataSet의 형태를 Json으로 작업하기 위해 관련 자료를 찾아보던 중

Codeplex에서 소개하고 있는 Json.NET framework을 사용해 보았다...

 

        public string Serialize(object value)
        {
            Type type = value.GetType();

            JsonSerializer json = new JsonSerializer();

            json.NullValueHandling = NullValueHandling.Ignore;

            json.ObjectCreationHandling = ObjectCreationHandling.Replace;
            json.MissingMemberHandling = MissingMemberHandling.Ignore;
            json.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;

 

            if (type == typeof(DataRow))
                json.Converters.Add(new DataRowConverter());
            else if (type == typeof(DataTable))
                json.Converters.Add(new DataTableConverter());
            else if (type == typeof(DataSet))
                json.Converters.Add(new DataSetConverter());

 

            StringWriter sw = new StringWriter();
            JsonTextWriter writer = new JsonTextWriter(sw);
            if (this.FormatJsonOutput)
                writer.Formatting = Formatting.Indented;
            else
                writer.Formatting = Formatting.None;

 

            writer.QuoteChar = '"';
            json.Serialize(writer, value);

 

            string output = sw.ToString();
            writer.Close();
            sw.Close();

 

            return output;
        }

        public object Deserialize(string jsonText, Type valueType)
        {
            JsonSerializer json = new JsonSerializer();

 

            json.NullValueHandling = NullValueHandling.Ignore;
            json.ObjectCreationHandling = ObjectCreationHandling.Replace;
            json.MissingMemberHandling = MissingMemberHandling.Ignore;
            json.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;

 

            StringReader sr = new StringReader(jsonText);
            JsonTextReader reader = new JsonTextReader(sr);
            object result = json.Deserialize(reader, valueType);
            reader.Close();

 

            return result;
        }

 

 

위 두개의 Method는 테이터 타입의 정보를 Json 형태로 변환이 가능하다.

예로 DataSet의 데이터를 Json으로 변환해 보자..

 public void SetJson()

{

    string JsonFileNM = "Test_JsonFile.jsf";

    string JsonString = string.Empty;

    DataSet ds =  null;

 

    ds = Test.GetData(...);

    JsonString = Serialize(ds);

     ....

     //*******************//

     // JsonFileNM로 파일 저장  //

     //*******************//

 ...

}

 

public DataSet GetJson(Sstring jsonText)

{

    DataSet ds = (DataSet)Deserialize(jsonText, typeof(DataSet)));

    return ds;

}

 

Json.NET framework의 특징은 다음과 같다.

-Flexible JSON serializer to convert .NET objects to JSON and back again
-LINQ to JSON for reading and writing JSON
-Writes indented, easy to read JSON
-Convert JSON to and from XML
-Supports Silverlight and Windows Phone

 

CodePlex에서 관련 소스를 download가 가능하다.

http://json.codeplex.com/

http://www.west-wind.com/Weblog/posts/471835.aspx