1. 程式人生 > >Json——js和C#對Json的操作

Json——js和C#對Json的操作

   JSON(JavaScript Object Notation) 是一種輕量級的資料交換格式,採用完全獨立於語言的文字格式。博主記得幾年前在華為外包專案中有一個和Android應用互動的需求,Android呼叫C#的Webservice的介面,就是通過Json這種格式來傳遞資料的。就是因為這種完全獨立於語言的資料格式,所以在系統的前後臺被廣泛使用。本篇用來記錄下前端JS以及後端C#裡面JSON的一些常用的操作方法。筆記筆記,好記性不如多筆記~~

JS前端JSON操作: 

一、Json資料轉字串:

var myList = [
            { Name: "Jim", Age: 20 },
            { Name: 
"Kate", Age: 21 }, { Name: "Lilei", Age: 18 }, { Name: "John", Age: 14 }, { Name: "LinTao", Age: 25 } ];

方法一:

var oString2 = JSON.stringify(myList);

結果

這個方法是js中JSON物件內建的。可以直接使用。

方法二:

var oString1 = myList.toJSONString();

這個方法需要json.js的支援。直接使用會報異常。

二、string字串轉JSON物件:

方法一:

var oString2 = JSON.stringify(myList);

var oJson1 = eval(oString2);

eval()方法是內建的。可直接使用。

方法二:

var oJson2 = $.parseJSON(oString2);

需要jQuery的支援。

方法三:

var oJson3 = JSON.parse(oString2);

是js內建的,可以直接使用。

方法四:

var oJson4 = String.parseJSON(oString2);

需要引json.js檔案。

綜上所述:在js裡面JSON變數操作不需要引用任何檔案直接使用的方法有JSON.stringify(myList)、JSON.parse(oString2)、eval(oString2)。

C#後臺JSON處理:

在C#裡面,Json可以理解為一種匿名物件,每一個鍵值對就可以理解為對應物件的屬性和值。在後端Json這種格式一般用於物件的序列化:

     public void JsonTooo()
        {
            string jsonStr = "{\"name\":\"tom\",\"age\":11}";   //jsonStr 為json格式的字串
            JavaScriptSerializer json = new JavaScriptSerializer();   //例項化一個能夠序列化資料的類
            ToJson list = json.Deserialize<ToJson>(jsonStr);    //將json資料轉化為物件型別並賦值給list
            string Name = list.name;      //Name的值為tom..  list可點出name
        }

那麼肯定就有一個物件和它對應。

     public class ToJson
        {
            public string name { get; set; }  //屬性的名字,必須與json格式字串中的"key"值一樣。
            public string age  { get; set; }
        }

這種對應關係的轉換序列化方式前面已經說了很多了。在此就不多說。

MVC裡面更是很好的支援了後臺程式對Json資料的支援。比如Controller裡面JsonResult物件

     public JsonResult GetEditModel(string strType)
        {
            var lstRes = new List<DragElementProp>();
            List<PageProperty> lstRes = new List<PageProperty>();
            return Json(new { lstDataAttr = lstRes, PageAttr = lstPageAttrs }, JsonRequestBehavior.AllowGet);
        }

只需要DraElementProp和PageProperty這兩個物件支援物件可序列化,就可以直接將物件傳到前端:

  [DataContract]
    public class PageProperty
    {
        [DataMember]
        public string Id { get; set; }
        [DataMember]
        public string Width { get; set; }
        [DataMember]
        public string Height { get; set; }
        [DataMember]
    }

前端和後端通訊使用Ajax的時候大部分情況是通過Json資料進行資料互動的。這個時候需要指定datatype型別為json。

$.Gmzp.AjaxPost = function (strUrl, oParams, funSuccessCallback, funErrorCallback, funFinishCallback) {
        $.ajax({
            type: "POST",
            url: strUrl,
            data: oParams,
       async: false,//false為阻塞請求
       dataType: "json", success: funSuccessCallback, error: funErrorCallback, complete: funFinishCallback }); };

相關推薦

Json——jsC#Json操作

   JSON(JavaScript Object Notation) 是一種輕量級的資料交換格式,採用完全獨立於語言的文字格式。博主記得幾年前在華為外包專案中有一個和Android應用互動的需求,Android呼叫C#的Webservice的介面,就是通過Json這種格式來傳遞資料的。就是因為這種完全獨立於

C++C字串操作總結

一 c語言的字串 c語言中沒有字串這個資料型別,用兩種方法來表示字串,第一種是字元陣列char s[],第二種是字元指標char *s, 兩者有區別,不能任務是一樣的,區別如下(不完整,後期再慢慢補充) 1 初始化和賦值 char[]字串賦值c語言中可以用

Json概述以及pythonjson的相關操作

ring ref 字符 peter 無法 圖片 eight mps encoder 什麽是json: JSON(JavaScript Object Notation) 是一種輕量級的數據交換格式。易於人閱讀和編寫。同時也易於機器解析和生成。它基於JavaScript Pro

C#Json資料進行序列化

json格式:我們常見的josn格式資料字串有一般都是一對大括號({}),或者兩對大括號的。下面就這2種常見的json格式的資料介紹一些對json格式的操作。 先了解下,我說的2種json格式: 第一種格式有一對大括號的: 第二種有兩對大括號的: { \"code\"

opencv c++訪問畫素c++圖片的基本操作

#include<iostream>; #include<opencv2\opencv.hpp> using namespace std; using namespace cv; int main() {     //Mat m =Mat

PostgreSQLSqlserverjson資料的支援

SQL Server 2005開始支援XML資料型別,提供原生的XML資料型別、XML索引及各種管理或輸出XML格式的函式。隨著JSON的流行,SQL Server2016開始支援JSON資料型別,不僅可以直接輸出JSON格式的結果集,還能讀取JSON格式的資料。對於有用到JSON格式的應用程式來說,這無疑是

C# 用XiliumCefGlue做瀏覽器,JSC#相互調用

需要 更改 net 執行 關於 我的電腦 thread alt 添加 原文:C# 用XiliumCefGlue做瀏覽器,JS和C#相互調用 版權聲明:本文為博主原創文章,未經博主允許不得轉載。 https://blog.csdn.ne

C#XML操作

C#對XML操作類 該類包含了對XML檔案的建立,新增,讀取,刪除,修改等操作 //#define isUnity #if isUnity using UnityEngine; #endif using System.Collections; using System; using System.C

欄位欄位的引數,查詢的13個方法,但標的雙下劃線外來鍵操作

                欄位  常用欄位  AutoField() 自增列,必須填入引數 primary_key=True則成為資料庫的主鍵。無該欄位時,django自動建立 一個model不能有兩個AutoField欄位。 IntegerField() 一個整數

JSON檔案以及PythonJSON檔案的讀寫

一,什麼是JSON檔案 JSON和XML都是網際網路上資料交換的主要載體。 在JSON出現之前,大家一直用XML來傳遞資料。因為XML是一種純文字格式,所以它適合在網路上交換資料。XML本身不算複雜,但是,加上DTD、XSD、XPath、XSLT等一大堆複雜的規範以後,任

Java入門系列-23-NIO(使用緩衝區通道檔案操作)

NIO 是什麼 java.nio全稱java non-blocking(非阻塞) IO(實際上是 new io),是指jdk1.4 及以上版本里提供的新api(New IO) ,為所有的原始型別(boolean型別除外)提供快取支援的資料容器,使用它可以提供非阻塞式的高伸縮性網路。 NIO與IO的區別

介紹了webkit到webengine的webengine中jsC++互相呼叫的方法

pro檔案 檔案中需要加入”QT += core gui webenginewidgets”這句話,不然提示找不到檔案 QT += core gui QT += core gui webenginewidgets greaterThan(QT_MAJOR

C/C++檔案操作小結

下面就介紹一下這些函式:1.fopen() fopen的原型是:FILE *fopen(const char *filename,const char *mode),fopen實現三個功能: 為使用而開啟一個流 ,把一個檔案和此流相連線 ,給此流返回一個FILR指標 引數filename指向要開啟的檔名,mo

22.WebBrowser中JSC++程式碼互相呼叫

利用WebBrowser控制元件我們可以利用各種Web介面庫做出高大上的介面和炫酷的動畫,擴充套件性也好,甚至可以實現介面實時升級。但是有一點問題,在WebBrowser內嵌的網頁中如何訪問本地計算機硬體呢?實時上,WebBrowser內嵌的網頁中JS與本地C++程式碼可以

基於 wke 的瀏覽器:如何實現 js c++ 的互相呼叫

一、引言 最近,老大給了我一個學習研討任務,也就是如何讓 js 和 C++ 進行互調使用。比如我可以在網頁中,使用 js 程式碼呼叫 c++ 函式,也可以在 c++ 函式中呼叫 js 對於介面進行控制。 這是為後期的軟體接入 Html5 做技術調研。 那麼

C# 用XiliumCefGlue做瀏覽器,JSC#相互呼叫

目錄: XiliumCefGlue初始化,最精簡Demo 1.解壓壓縮包得到下列檔案。選擇需要的檔案複製到自己工程【pdb為除錯生成檔案不需要】,之後將【Xilium.CefGlue】和【Xilium.CefGlue.WindowsForm

jsjq的dom操作&&append的元素繫結事件失效

列數:var td=$("#toptable tr").eq(1).find("td").length;    ps:當第一列是th的時候可以選擇find("th")然後就是弟0行,如果第一列不是th那麼可以直接eq(0)

Node.js C++ 之間的型別轉換

我非常喜歡使用 Node.js,但是當涉及到計算密集型的場景時 Node.js 就不能夠很好地勝任了。而在這樣的情況下 C++ 是一個很好的選擇,非常幸運 Node.js 官方提供了 C/C++ Addons 的機制讓我們能夠使用 V8 API 把 Node.js 和 C++ 結合起來。 雖然在 Node.

jsandroid的簡單操作

public class MainActivity extends AppCompatActivity implements View.OnClickListener { private Button btn1; private Button btn2;

C#C++的互操作——C++ dll 通過回撥向C#傳送報文(位元組流)

C++的DLL通過一個回撥函式每隔1秒向C#的程式傳送一個報文(位元組流),回撥函式的簽名為 int fun(char* data,int len) 這個位元組流中包含的是下面這個結構體中的資料: typedef struct Msg {     INT64 durati