ホームページ > ウェブフロントエンド > jsチュートリアル > JSON クライアント側とサーバー側の形式変換_json

JSON クライアント側とサーバー側の形式変換_json

WBOY
リリース: 2016-05-16 18:47:39
オリジナル
1102 人が閲覧しました

ここでは、JavaScript の構文から json を導出し、これに基づいて、ajax アプリケーションで JSON を使用する方法を説明します。
JavaScript: array に配列があることは誰もが知っています。その形式は次のとおりです:

コードをコピーします コードは次のとおりです:

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

上記の例は配列の形式であり、次と同等です:
コードをコピー コードは次のとおりです:

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

もう 1 つはオブジェクトです。オブジェクトの作成方法は次のとおりです:
コードをコピー コードは次のとおりです:

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

上記の作成方法は同じです 以下のように作成します:
コードをコピーコードは次のとおりです:

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

他の JavaScript オブジェクトと同様に、属性は '.' または '[ ]' で表すことができます。
オブジェクトには次のように配列を含めることができます:

コードをコピー コードは次のとおりです:
var Beatles = {
"国" :"イングランド",
"YeatFormed": 1959,
"スタイル" : "ロックンロール",
"メンバー":[ " Paul"," John","George","Ringo"]
}

配列にオブジェクトを含めることもできます:

コードをコピー コードは次のとおりです:
var Rockbands =[
{
"Name":"BeatLes",
"郡": "イングランド" 、
"結成年" : 1959 年、
"スタイル" : "ロックンロール" 、
"メンバー" : ["ポール"、"ジョン"、"ジョージ" ,"リンゴ"]
},
{
"名前" ""ローリング ストーンズ",
"国":"イングランド",
"結成年":1962,
"スタイル": "ロックンロール"、
"メンバー" :["ミック"]、"キース"、"チャーリー"、"ビル"]
}
]

JSON の
公式 Web サイトでは、JSON を次のように説明しています。
1. 人が読み書きしやすい
3. 機械が解析し、生成するのが簡単です。 🎜>JSON 構文:
一部の若いプログラマーにとって JSON は読み書きが難しいかもしれませんが、より経験豊富な人々にとってはまだ十分です (個人的な意見)
JSON と JavaScript の構文は似ていますが、それぞれつまり、オブジェクトはオブジェクトではなく文字列として使用する必要がありますが、変換は eval() を使用して行うことができます。安全上の理由から、変換には json.js を使用することをお勧めします。最も基本的なメソッドは次の 2 つです。
JSON.parse(strJSON) は次のとおりです。 JSON 文字列を JavaScript オブジェクトに変換します。
JSON.stringify(objJSON) – JavaScript オブジェクトを JSON オブジェクトに変換するために使用されます。
これはクライアント側でのデータ変換ですが、サーバー側ではどのように行われるのでしょうか?さまざまな言語に対応する非常に優れた変換ライブラリがすでに存在します。私は .net に近いので、C# を使用して JSON のサーバー側変換を実行する方法を説明します。
外国人の兄弟が .net で JSON を変換する方法について非常に優れた記事を書いているのを見ました。 JSON.NET と Microsoft の JavaScriptSerializer が統合されているため、JSON の形式に関係なく、基本的に処理できます。
JSON を変換し、JSON を生成および解析するための簡単なコードを提供します。



コードをコピー コードは次のとおりです:

public string Serialize(object value)
{
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);

文字列出力 = 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 (jsonText) リーダー = new JsonTextReader(sr);
オブジェクトの結果 = json.Deserialize(reader, valueType);

結果を返します; >NET.JSON の基盤上で JavascriptSeriazible を使用して转换:




复制代


代以下:
public string Serialize(object value)
{
JavaScriptSerializer ser = 新しい JavaScriptSerializer();

リストコンバータ = new List();

if (value != null)
{
Type type = 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);
}
public object Deserialize(string jsonText, Type valueType)
{
// *** '動的' 非定数型インスタンスでリフレクションを使用する必要があります
JavaScriptSerializer ser = new JavaScriptSerializer ();


object result = ser.GetType()
.GetMethod("Deserialize")
.MakeGenericMethod(valueType)
.Invoke(ser, new object[1] { jsonText });
結果を返します。
}
}



内部クラス WebExtensionsDataTableConverter : JavaScriptConverter
{
public override IEnumerable SupportedTypes
{
get { return new Type[] {typeof (DataTable)}; }
}

パブリック オーバーライド オブジェクト Deserialize(IDictionary ディクショナリ, Type タイプ,
JavaScriptSerializer シリアライザー)
{
throw new NotImplementedException();
}


次のセクションでは、ASP.NET の環境で JSON や DataTable などの変換をどのように使用するか、JQuery の AJAX を使用した Web サービスの生成による JSON の生成に相当するものを示します。 ^_^
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート