JSON 客户端和服务器端的格式转换_json
这里我们会从javascript的语法引申出json,并在此基础上引出如何在ajax应用程序上使用JSON。
在javascript大家知道有个Arrays:数组。它的格式如下:
var Beatles = [“Paul”,”John”,”George”,”Ringo”];
上面的实例一个Array的形式和下面的等价:
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 = 1959;
Beatles.Style = “Rock'n'Roll”;
同其它javascript对象一样,属性能够通过'.'或'[ ]'来表示出来。
Object可以包含Array, 如下:
var Beatles = {
“Country” :”England”,
“YeatFormed”: 1959,
“Style” : “Rock'n'Roll”,
“Members”:[ “Paul”,”John”,”George”,”Ringo”]
}
同样也可以在Array中包含Objects:
var Rockbands =[
{
“Name”:”BeatLes”,
“County” : “England”,
“YearFormed” : 1959,
“Style” : “Rock'n'Roll”,
“Members” : [“Paul”,”John”,”George”,”Ringo”]
},
{
“Name” “ “Rolling Stones”,
“Country”:”England”,
“YearFormed”:1962,
“Style” : “Rock'n'Roll”,
“Members” :[“Mick”],”Keith”,”Charlie”,”Bill”]
}
]
在JSON的官网上描述JSON如下:
1. 一个轻量级的数据转化形式。
2. 容易人们去读和写。
3. 容易机器去解析和生成。
JSON的语法:
JSON对于一些初级程序员可能觉得不好读和写,但是对于比较有经验的人来说还是相当不错的(个人观点)。
虽然JSON和javascript的语法差不多但是它的每个对象不能够赋值给一个变量。也就是它本身不是哥object而是个字符串。每次得到JSON时我们必须通过转化来使用它。虽然使用javascript的eval()功能能够实现转换,但是为了安全起见建议大家使用json.js来转换。可以到上面提供的那个地址下载。它里面最基本的两个方法:
JSON.parse(strJSON)-是用来转化JSON字符串为JavaScript对象的、
JSON.stringify(objJSON) –用来转化一个JavaScript对象为一个JSON对象的。
这个是客户端的数据转化,那么服务器端如何进行呢?针对不同的语言会有不同的已经非常好的转换库。因为本人是接近.net的所以这里介绍如何使用C#来进行JSON的服务器端转换。
我看一个外国大哥写了一篇 关于在.net下如何转化JSON的文章相当不错。他把JSON.NET和微软的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 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)
{
Newtonsoft.Json.JsonSerializer json = new Newtonsoft.Json.JsonSerializer();
json.NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore;
json.ObjectCreationHandling = Newtonsoft.Json.ObjectCreationHandling.Replace;
json.MissingMemberHandling = Newtonsoft.Json.MissingMemberHandling.Ignore;
json.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore;
StringReader sr = new StringReader(jsonText);
Newtonsoft.Json.JsonTextReader reader = new JsonTextReader(sr);
object result = json.Deserialize(reader, valueType);
reader.Close();
return result;
}
在NET.JSON的基础上使用JavascriptSeriazible来转换:
internal class WebExtensionsJavaScriptSerializer : JSONSerializerBase, IJSONSerializer
{
public WebExtensionsJavaScriptSerializer(JSONSerializer serializer) : base(serializer)
{}
public string Serialize(object value)
{
JavaScriptSerializer ser = new JavaScriptSerializer();
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)
{
// *** Have to use Reflection with a 'dynamic' non constant type instance
JavaScriptSerializer ser = new JavaScriptSerializer();
object result = ser.GetType()
.GetMethod("Deserialize")
.MakeGenericMethod(valueType)
.Invoke(ser, new object[1] { jsonText });
return result;
}
}
internal class WebExtensionsDataTableConverter : JavaScriptConverter
{
public override IEnumerable
{
get { return new Type[] {typeof (DataTable)}; }
}
public override object Deserialize(IDictionary
JavaScriptSerializer serializer)
{
throw new NotImplementedException();
}
下篇介绍如何在ASP.NET的环境下使用JSON和DataTable等的转换,还有介绍使用JQuery的AJAX调用Web Services的生成JSON、相当值得期待。^_^

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas


![Pelanggan VMware Horizon tidak boleh dibuka [Betulkan]](https://img.php.cn/upload/article/000/887/227/170835607042441.jpg?x-oss-process=image/resize,m_fill,h_207,w_330)
VMware Horizon Client membantu anda mengakses desktop maya dengan mudah. Walau bagaimanapun, kadangkala infrastruktur desktop maya mungkin mengalami masalah permulaan. Artikel ini membincangkan penyelesaian yang boleh anda ambil apabila klien VMware Horizon gagal dimulakan dengan jayanya. Mengapa klien VMware Horizon saya tidak boleh dibuka? Apabila mengkonfigurasi VDI, ralat mungkin berlaku jika klien VMWareHorizon tidak dibuka. Sila sahkan bahawa pentadbir IT anda telah memberikan URL dan bukti kelayakan yang betul. Jika semuanya baik-baik saja, ikuti penyelesaian yang dinyatakan dalam panduan ini untuk menyelesaikan isu tersebut. Betulkan Klien VMWareHorizon Tidak Dibuka Jika VMW tidak dibuka pada komputer Windows anda
![Pelanggan VMware Horizon membeku atau terhenti semasa menyambung [Betulkan]](https://img.php.cn/upload/article/000/887/227/170942987315391.jpg?x-oss-process=image/resize,m_fill,h_207,w_330)
Apabila menyambung ke VDI menggunakan klien VMWareHorizon, kami mungkin menghadapi situasi di mana aplikasi membeku semasa pengesahan atau blok sambungan. Artikel ini akan meneroka isu ini dan menyediakan cara untuk menyelesaikan situasi ini. Apabila klien VMWareHorizon mengalami masalah pembekuan atau sambungan, terdapat beberapa perkara yang boleh anda lakukan untuk menyelesaikan isu tersebut. Betulkan klien VMWareHorizon membeku atau tersekat semasa menyambung Jika klien VMWareHorizon membeku atau gagal menyambung pada Windows 11/10, ikuti penyelesaian yang dinyatakan di bawah: Semak sambungan rangkaian Mulakan semula klien Horizon Semak status pelayan Horizon Kosongkan cache klien Betulkan Ho

Bagaimana untuk menukar format gambar dalam win11? Semua orang tahu bahawa fail imej datang dalam pelbagai format, dan setiap format mempunyai perbezaan tersendiri dalam kualiti imej dan saiz fail Selain itu, apabila kami menggunakan beberapa perisian imej untuk pemprosesan imej, kami akan menerima format imej kerana keserasian, kami perlukan untuk menukar format imej, jadi bagaimana untuk melaksanakan operasi ini dalam sistem win11? Ramai rakan tidak tahu bagaimana untuk beroperasi secara terperinci Editor telah menyusun langkah-langkah untuk memformat pemacu C dalam win11 di bawah. Langkah-langkah untuk mengubah suai format gambar win11 1. Pertama, kita boleh mencari gambar yang kita perlukan untuk mengubah suai format pada desktop win11. 2. Di hujung nama gambar kita boleh

Penerokaan komunikasi antara Vue dan pelayan: Kaedah mengendalikan permintaan tamat masa Pengenalan: Semasa proses pembangunan Vue, berkomunikasi dengan pelayan bahagian belakang adalah situasi yang sangat biasa. Walau bagaimanapun, kadangkala permintaan mungkin tamat masa disebabkan kelewatan rangkaian atau sebab lain. Artikel ini akan membincangkan cara mengendalikan permintaan tamat masa dalam Vue dan memberikan contoh kod yang sepadan. 1. Gunakan Axios untuk membuat permintaan Dalam Vue, kami biasanya menggunakan Axios sebagai perpustakaan klien HTTP untuk membuat permintaan rangkaian. Axios menyediakan satu siri kaedah untuk menghantar permintaan dan boleh

MQTT (MessageQueuingTelemetryTransport) ialah protokol penghantaran mesej ringan yang biasa digunakan untuk komunikasi antara peranti IoT. PHP ialah bahasa pengaturcaraan sisi pelayan yang biasa digunakan yang boleh digunakan untuk membangunkan klien MQTT. Artikel ini akan memperkenalkan cara menggunakan PHP untuk membangunkan klien MQTT dan memasukkan kandungan berikut: Konsep asas protokol MQTT Pemilihan dan contoh penggunaan perpustakaan klien PHPMQTT: Menggunakan klien PHPMQTT untuk menerbitkan dan

Cara menggunakan PHP untuk melaksanakan pelarasan resolusi imej dan penukaran format Pengenalan: Dalam pembangunan laman web, kami sering menghadapi keperluan untuk melaraskan resolusi imej dan menukar format imej. Artikel ini akan memperkenalkan cara menggunakan PHP untuk melaksanakan fungsi ini. Melaraskan resolusi imej Melaraskan resolusi imej boleh membantu kami mengoptimumkan kelajuan memuatkan halaman dan mengurangkan penggunaan lebar jalur. Berikut ialah kod contoh untuk melaraskan resolusi imej menggunakan pustaka PHPGD: <?phpfunctionresizeImage($sourc

Apabila ramai rakan memuat turun fail, mereka mula-mula akan menyemak imbas di halaman web dan kemudian memindahkan kepada klien untuk memuat turun. Tetapi kadangkala pengguna akan menghadapi masalah bahawa halaman web Baidu Netdisk tidak boleh memulakan klien. Sebagai tindak balas kepada masalah ini, editor telah menyediakan penyelesaian untuk anda menyelesaikan masalah yang halaman web Baidu Netdisk tidak boleh memulakan pelanggan yang memerlukan boleh merujuk kepadanya. Penyelesaian 1. Mungkin Baidu Netdisk bukan versi terkini Buka klien Baidu Netdisk secara manual, klik butang tetapan di penjuru kanan sebelah atas, dan kemudian klik naik taraf versi. Jika tiada kemas kini, gesaan berikut akan muncul Jika terdapat kemas kini, sila ikut gesaan untuk mengemas kini. 2. Program perkhidmatan pengesanan Baidu Cloud Disk mungkin dilumpuhkan secara manual atau menggunakan perisian keselamatan untuk melumpuhkan program perkhidmatan pengesanan Baidu Cloud Disk secara automatik. Sila semak

Pelanggan mudah alih merujuk kepada aplikasi yang berjalan pada telefon pintar dan menyediakan pengguna dengan pelbagai fungsi dan perkhidmatan dalam bentuk pelanggan asli atau pelanggan web. Pelanggan mudah alih boleh dibahagikan kepada dua bentuk: klien asal dan klien web merujuk kepada aplikasi yang ditulis untuk sistem pengendalian tertentu menggunakan bahasa pengaturcaraan dan alat pembangunan tertentu Kelebihan pelanggan web ialah mereka mempunyai keserasian merentas platform. , boleh berjalan pada peranti berbeza tanpa sekatan sistem pengendalian, tetapi berbanding dengan klien asli, prestasi dan pengalaman pengguna klien web mungkin berkurangan.
