>웹 프론트엔드 >JS 튜토리얼 >JSON 클라이언트 측 및 서버 측 형식 변환_json

JSON 클라이언트 측 및 서버 측 형식 변환_json

WBOY
WBOY원래의
2016-05-16 18:47:391103검색

여기서는 javascript의 구문에서 json을 파생시키고, 이를 기반으로 ajax 애플리케이션에서 JSON을 사용하는 방법을 살펴보겠습니다.
자바스크립트에 배열이 있다는 것은 누구나 알고 있습니다. 형식은 다음과 같습니다.

코드 복사 코드는 다음과 같습니다.

var Beatles = ["Paul" ,"John","George","Ringo"];

위의 예는 배열 형식이며 다음과 동일합니다.
코드 복사 코드는 다음과 같습니다.

var Beatles =new Array ["Paul","John"," George","Ringo"];

다른 하나는 Objects입니다. 객체를 생성하는 방법은 다음과 같습니다.
코드 복사 코드는 다음과 같습니다.

var Beatles = {"Country":"England","YearFormed":1959,"Style":"Rock'n' Roll"}

위 생성 방법은 동일합니다. 다음과 같이 생성합니다.
코드 복사 코드는 다음과 같습니다.

var Beatles = new Object( );
Beatles.Country = "England";
Beatles.YearFormad =
Beatles.Style = " Rock'n'Roll";

다른 자바스크립트 객체와 동일 마찬가지로 속성은 '.' 또는 '[ ]'로 나타낼 수 있습니다.
객체는 다음과 같이 배열을 포함할 수 있습니다.
코드 복사 코드는 다음과 같습니다.

var Beatles = {
"국가":"잉글랜드",
"YeatFormed": 1959,
"Style" : "Rock'n'Roll",
"멤버":[ " Paul"," John","George","Ringo"]
}

배열에 객체를 포함할 수도 있습니다:
코드 복사 코드는 다음과 같습니다:

var Rockbands =[
{
"Name":"BeatLes",
" County": "England" ,
"YearFormed" : 1959,
"Style" : "Rock'n'Roll" ,
"Members" : ["Paul","John","George" ,"Ringo"]
},
{
"이름" ""Rolling Stones",
"국가":"England",
"연도":1962,
" 스타일": "Rock' n'Roll",
"멤버":["Mick"],"Keith","Charlie","Bill"]
}
]

JSON 공식 웹사이트에서는 다음과 같이 JSON을 설명합니다.
1. 가벼운 데이터 변환 형식
2. 사람이 읽고 쓰기 쉽습니다.
3. 🎜>JSON 구문 :
JSON은 일부 주니어 프로그래머에게는 읽고 쓰기가 어려울 수 있지만, 경험이 많은 사람들에게는 여전히 꽤 좋습니다(개인 의견)
JSON과 javascript의 구문은 비슷하지만 각각 그 중 객체는 변수에 할당될 수 없습니다. 즉, 객체가 아니라 문자열입니다. 변환은 eval()을 사용하여 수행할 수 있습니다. JavaScript의 기능은 안전상의 이유로 변환을 위해 json.js를 사용하는 것이 좋습니다. 가장 기본적인 두 가지 방법은 다음과 같습니다.
JSON.parse(strJSON) - JSON 문자열을 JavaScript 개체로 변환합니다.
JSON.stringify(objJSON) – JavaScript 개체를 JSON 개체로 변환하는 데 사용됩니다.
클라이언트 측에서의 데이터 변환인데, 서버 측에서는 어떻게 진행되나요? 이미 다양한 언어에 대한 아주 좋은 변환 라이브러리가 있습니다. 저는 .net에 가깝기 때문에 C#을 사용하여 JSON의 서버 측 변환을 수행하는 방법은 다음과 같습니다.
외국 형제가 .net에서 JSON을 변환하는 방법에 대해 꽤 좋은 글을 쓴 것을 봤습니다. JSON.NET과 Microsoft의 JavaScriptSerializer를 통합하므로 어떤 JSON 형식을 사용하더라도 기본적으로 처리할 수 있습니다.
이제 JSON 변환, JSON 생성 및 구문 분석을 위한 간단한 코드를 제공합니다.

코드 복사 코드는 다음과 같습니다.

공개 문자열 Serialize(객체 값)
{
Type type = value.GetType();

Newtonsoft.Json.JsonSerializer json = new Newtonsoft.Json.JsonSerializer();

json.NullValueHandling = NullValueHandling.Ignore;

json.ObjectCreationHandling = Newtonsoft.Json.ObjectCreationHandling.Replace;
json.MissingMemberHandling = Newtonsoft.Json.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();
Newtonsoft.Json.JsonTextWriter 작가 = new JsonTextWriter(sw);
if (this.FormatJsonOutput)
writer.Formatting = Formatting.Indented;
else
writer.Formatting = Formatting.None;

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

string 출력 = sw.ToString();
writer.Close();
sw.Close();

출력 반환;
}

공용 객체 Deserialize(string jsonText, Type valueType)
{
Newtonsoft.Json.JsonSerializer json = new Newtonsoft.Json.JsonSerializer();

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

StringReader sr = new StringReader(jsonText)
Newtonsoft.Json.JsonTextReader; JsonTextReader(sr);
객체 결과 = json.Deserialize(reader, valueType);
reader.Close();

결과 반환; >재NET.JSON의 基础上使사용JavascriptSeriazible来转换:



复代码
代码如下:internal class WebExtensionsJavaScriptSerializer : JSONSerializerBase, IJSONSerializer { public WebExtensionsJavaScriptSerializer(JSONSerializer serializer) : base(serializer)
{}

public string Serialize(객체 값)
{
JavaScriptSerializer ser = 새로운 JavaScriptSerializer();

목록 변환기 = 새로운 List();

if (값 != null)
{
유형 유형 = value.GetType();
if (type == typeof(DataTable) || type == typeof(DataRow) || type == typeof(DataSet))
{
converters.Add(new WebExtensionsDataRowConverter());
converters.Add(new WebExtensionsDataTableConverter());
converters.Add(new WebExtensionsDataSetConverter());
}

if (converters.Count > 0)
ser.RegisterConverters(converters);
}

return = ser.Serialize(value);
}
공용 객체 Deserialize(string jsonText, Type valueType)
{
// *** '동적' 비상수 유형 인스턴스와 함께 Reflection을 사용해야 함
JavaScriptSerializer ser = new JavaScriptSerializer ();


객체 결과 = ser.GetType()
.GetMethod("Deserialize")
.MakeGenericMethod(valueType)
.Invoke(ser, new object[1] { jsonText });
반환 결과;
}
}



내부 클래스 WebExtensionsDataTableConverter : JavaScriptConverter
{
공개 재정의 IEnumerable SupportedTypes
{
get { return new Type[] {typeof(DataTable)}; }
}

공용 재정의 객체 Deserialize(IDictionary Dictionary, Type type,
JavaScriptSerializer serializer)
{
throw new NotImplementedException();
}

下篇介绍如何在 asp.net 的环境下使用 json 和 dataTable 等的转换, 还有介绍使用 jQuery 的 ajax 调用 웹 서비스 的生成 json 、相当值得期待。 ^_^
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.