json轉clientdataset,json轉clientdataset類型

本文目錄一覽:

如何將json的數據轉化成csv的數據格式

著作權歸作者所有。

商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。

作者:Twiknight

鏈接:

來源:知乎

json不能直接轉化為csv,因為它們根本不是存同一類東西的。

json的本質是字典,是hash表,用來存儲非結構化的數據。

csv本質是表,用來存儲結構化數據(雖然實際上你存什麼沒人管)。

想把json轉成csv,核心問題只有一個:

如何把非結構化的數據處理成結構化的

這個問題解決起來有最簡單的思路有兩個:

配置。讓程序決定json里的非結構化數據應該如何處理。

約定。規定json按照某種格式來寫。

這兩種方式各有適用的場景。配置的思路適用於自己不能控制json內容的情況,但是工作繁雜;約定處理起來簡單,但是不能對付未知內容的json。

Twiknight/csv_generator · GitHub

這是一個簡單的使用約定的方式處理Json的小工具,但是我猜這不是你想要的那種。

話說簡潔裏面寫着「計算機」的人來問這種問題真的合適嗎?

Github上面有關csv和json轉換的小工具幾個月之前就有好幾面了。

C# 怎麼將json 轉換成 datatable

主要包含兩個方法:

1. 獲取的DataTable 對象 轉換為Json 字符串

2. Json 字符串 轉換為 DataTable數據集合

#region DataTable 轉換為Json字符串實例方法

/// summary

/// GetClassTypeJosn 的摘要說明

/// /summary

public class GetClassTypeJosn : IHttpHandler

{

/// summary

/// 文件名:DataTable 和Json 字符串互轉

/// 版權所有:Copyright (C) Create Family Wealth liangjw

/// 創建標示:2013-08-03

/// /summary

//用法說明實例

public void ProcessRequest(HttpContext context)

{

context.Response.ContentType = “application/json”;

context.Response.Charset = “utf-8”;

HttpRequest req = context.Request;

string method = req[“method”].ToStr().ToLower();

//獲取合同明細列表 DataTable 轉換為Json字符串

if (method == “txtdate”)

{

string json = “”;

BO.MakeContractMx bll = new MakeContractMx();

DataSet ds = bll.GetDataTable();

if (ds.Tables.Count 0)

{

json =ToJson(ds.Tables[0]);

}

context.Response.Write(json);

return;

}

}

public bool IsReusable

{

get

{

return false;

}

}

}

#endregion

#region Json字符串轉換為DataTable 實例方法

public DataTable JsonToDataTable(json)

{

DataTable dt= ToDataTable(json);

return dt;

}

#endregion

#region DataTable 轉換為Json 字符串

/// summary

/// DataTable 對象 轉換為Json 字符串

/// /summary

/// param name=”dt”/param

/// returns/returns

public static string ToJson(this DataTable dt)

{

JavaScriptSerializer javaScriptSerializer = new JavaScriptSerializer();

javaScriptSerializer.MaxJsonLength = Int32.MaxValue; //取得最大數值

ArrayList arrayList = new ArrayList();

foreach (DataRow dataRow in dt.Rows)

{

Dictionarystring, object dictionary = new Dictionarystring, object(); //實例化一個參數集合

foreach (DataColumn dataColumn in dt.Columns)

{

dictionary.Add(dataColumn.ColumnName, dataRow[dataColumn.ColumnName].ToStr());

}

arrayList.Add(dictionary); //ArrayList集合中添加鍵值

}

return javaScriptSerializer.Serialize(arrayList); //返回一個json字符串

}

#endregion

#region Json 字符串 轉換為 DataTable數據集合

/// summary

/// Json 字符串 轉換為 DataTable數據集合

/// /summary

/// param name=”json”/param

/// returns/returns

public static DataTable ToDataTable(this string json)

{

DataTable dataTable = new DataTable(); //實例化

DataTable result;

try

{

JavaScriptSerializer javaScriptSerializer = new JavaScriptSerializer();

javaScriptSerializer.MaxJsonLength = Int32.MaxValue; //取得最大數值

ArrayList arrayList = javaScriptSerializer.DeserializeArrayList(json);

if (arrayList.Count 0)

{

foreach (Dictionarystring, object dictionary in arrayList)

{

if (dictionary.Keys.Countstring() == 0)

{

result = dataTable;

return result;

}

if (dataTable.Columns.Count == 0)

{

foreach (string current in dictionary.Keys)

{

dataTable.Columns.Add(current, dictionary[current].GetType());

}

}

DataRow dataRow = dataTable.NewRow();

foreach (string current in dictionary.Keys)

{

dataRow[current] = dictionary[current];

}

dataTable.Rows.Add(dataRow); //循環添加行到DataTable中

}

}

}

catch

{

}

result = dataTable;

return result;

}

#endregion

#region 轉換為string字符串類型

/// summary

/// 轉換為string字符串類型

/// /summary

/// param name=”s”獲取需要轉換的值/param

/// param name=”format”需要格式化的位數/param

/// returns返回一個新的字符串/returns

public static string ToStr(this object s, string format = “”)

{

string result = “”;

try

{

if (format == “”)

{

result = s.ToString();

}

else

{

result = string.Format(“{0:” + format + “}”, s);

}

}

catch

{

}

return result;

}

#endregion

java中把json怎麼轉換成數組?

使用原生的解析:

String json = “…”;

//遍曆數組裡的值,得到每個獨立的對象,然後獲取對應的值設置到聲明好的對象中,最終創建對象完成後添加到集合中,如我自己代碼里的片段:

for (int j = 0; j array.length(); j++) {

obj = array.getJSONObject(j);

Data data = new Data();

mDataList.add(data);

}

數組聲明

在數組的聲明格式里,「數據類型」是聲明數組元素的數據類型,可以是java語言中任意的數據類型,包括簡單類型和結構類型。「數組名」是用來統一這些相同數據類型的名稱,其命名規則和變量的命名規則相同。

數組聲明之後,接下來便是要分配數組所需要的內存,這時必須用運算符new,其中「個數」是告訴編譯器,所聲明的數組要存放多少個元素,所以new運算符是通知編譯器根據括號里的個數,在內存中分配一塊空間供該數組使用。利用new運算符為數組元素分配內存空間的方式稱為動態分配方式。

以上內容參考:百度百科-數組

請教如何將以下的json格式轉為DataTable

#region Json 字符串 轉換為 DataTable數據集合

/// summary

/// Json 字符串 轉換為 DataTable數據集合

/// /summary

/// param name=”json”/param

/// returns/returns

public static DataTable ToDataTable(this string json)

{

DataTable dataTable = new DataTable(); //實例化

DataTable result;

try

{

JavaScriptSerializer javaScriptSerializer = new JavaScriptSerializer();

javaScriptSerializer.MaxJsonLength = Int32.MaxValue; //取得最大數值

ArrayList arrayList = javaScriptSerializer.DeserializeArrayList(json);

if (arrayList.Count 0)

{

foreach (Dictionarystring, object dictionary in arrayList)

{

if (dictionary.Keys.Countstring() == 0)

{

result = dataTable;

return result;

}

if (dataTable.Columns.Count == 0)

{

foreach (string current in dictionary.Keys)

{

dataTable.Columns.Add(current, dictionary[current].GetType());

}

}

DataRow dataRow = dataTable.NewRow();

foreach (string current in dictionary.Keys)

{

dataRow[current] = dictionary[current];

}

dataTable.Rows.Add(dataRow); //循環添加行到DataTable中

}

}

}

catch

{

}

result = dataTable;

return result;

}

#endregion

如何將json數據轉化為數據庫文件

從json數組中得到java數組,可以對該數組進行轉化,如將JSONArray轉化為String型、Long型、Double型、Integer型、Date型等等。

分別採用jsonArray下的getString(index)、getLong(index)、getDouble(index)、getInt(index)等方法。

同樣,如果要獲取java數組中的元素,只需要遍歷該數組。

Java代碼 收藏代碼

/**

* 將json數組轉化為Long型

* @param str

* @return

*/

public static Long[] getJsonToLongArray(String str) {

JSONArray jsonArray = JSONArray.fromObject(str);

Long[] arr=new Long[jsonArray.size()];

for(int i=0;ijsonArray.size();i++){

arr[i]=jsonArray.getLong(i);

System.out.println(arr[i]);

}

return arr;

}

/**

* 將json數組轉化為String型

* @param str

* @return

*/

public static String[] getJsonToStringArray(String str) {

JSONArray jsonArray = JSONArray.fromObject(str);

String[] arr=new String[jsonArray.size()];

for(int i=0;ijsonArray.size();i++){

arr[i]=jsonArray.getString(i);

System.out.println(arr[i]);

}

return arr;

}

/**

* 將json數組轉化為Double型

* @param str

* @return

*/

public static Double[] getJsonToDoubleArray(String str) {

JSONArray jsonArray = JSONArray.fromObject(str);

Double[] arr=new Double[jsonArray.size()];

for(int i=0;ijsonArray.size();i++){

arr[i]=jsonArray.getDouble(i);

}

return arr;

}

/**

* 將json數組轉化為Date型

* @param str

* @return

*/

public static Date[] getJsonToDateArray(String jsonString) {

JSONArray jsonArray = JSONArray.fromObject(jsonString);

Date[] dateArray = new Date[jsonArray.size()];

String dateString;

Date date;

SimpleDateFormat sdf=new SimpleDateFormat(“yyyy-MM-dd”);

for (int i = 0; i jsonArray.size(); i++) {

dateString = jsonArray.getString(i);

try {

date=sdf.parse(dateString);

dateArray[i] = date;

} catch (Exception e) {

e.printStackTrace();

}

}

return dateArray;

}

public static void main(String[] args) {

JSONArray jsonLongs = new JSONArray();

jsonLongs.add(0, “111”);

jsonLongs.add(1, “222.25”);

jsonLongs.add(2, new Long(333));

jsonLongs.add(3, 444);

Long[] log=getJsonToLongArray(jsonLongs.toString());

for(int i=0;ilog.length;i++){

System.out.println(log[i]);

}

JSONArray jsonStrs = new JSONArray();

jsonStrs.add(0, “2011-01-01”);

jsonStrs.add(1, “2011-01-03”);

jsonStrs.add(2, “2011-01-04 11:11:11”);

Date[] d=getJsonToDateArray(jsonStrs.toString());

for(int i=0;id.length;i++){

System.out.println(d[i]);

}

}

/*結果如下:

* 111

* 222

* 333

* 444

*

* Sat Jan 01 00:00:00 CST 2011

* Mon Jan 03 00:00:00 CST 2011

* Tue Jan 04 00:00:00 CST 2011

*/

xe2下TClientDataSet與Json怎麼互轉

unit uJSONDB;

  

interface

  uses

     SysUtils, Classes, Variants, DB, DBClient, SuperObject, Dialogs;

  type

    TJSONDB = class

  

    private

      class function getJsonFieldNames(res: ISuperObject):TStringList ;

      class function getJsonFieldValues(res: ISuperObject):TStringList ;

    public

      class procedure JsonToClientDataSet(jsonArr: TSuperArray; dstCDS: TClientDataSet);

      class function ClientDataSetToJSON(srcCDS: TClientDataSet):UTF8String;

  end;

  

implementation

  

function GetToken(var astring: string;const fmt:array of char): string;

var

   i,j:integer;

   Found:Boolean;

begin

    found:=false;

    result:=”;

    aString := TrimLeft(aString);

  

    if length(astring)=0 then exit;

  

    I:=1;

    while I=length(Astring) do

          begin

          found:=false;

          if aString[i]=#128 then

             begin

             for j:=Low(Fmt) to High(Fmt) do

                 begin

                 if (astring[i]Fmt[j])  then continue;

                 found:=true;

                 break;

                 end;

             if Not found then I:=I+1;

             end

          else I:=I+2;

  

          if found then break;

          end;

  

    if found then

    begin

      result:=copy(astring,1,i-1);

      delete(astring,1,i);

    end

    else

    begin

      result:=astring;

      astring:=”;

    end;

end;

  

function GetFieldParams(PropName, Source:string): string;

var

   S1, S2: string;

   TmpParam: string;

   AChar: string;

   aValue, aPropName, aSource: string;

begin

   Result:=”;

   if Source=” then Exit;

   aSource := Source;

   while aSource  ” do

   begin

     aValue := GetToken(aSource,[‘,’]);

     aPropName := GetToken(aValue,[‘:’]);

     if CompareText(PropName,aPropName)  0 then continue;

     Result := aValue;

     break;

   end;

end;

//從json取得字段名稱

class function TJSONDB.getJsonFieldNames(res: ISuperObject):TStringList ;

var

  i: Integer;

  fieldList : TStringList;

  fieldNames :String;

begin

  try

    fieldList := TStringList.Create;

    fieldNames := res.AsObject.getNames.AsString;

    fieldNames := StringReplace(fieldNames, ‘[‘, ”, [rfReplaceAll, rfIgnoreCase]);

    fieldNames := StringReplace(fieldNames, ‘]’, ”, [rfReplaceAll, rfIgnoreCase]);

    fieldNames := StringReplace(fieldNames, ‘”‘, ”, [rfReplaceAll, rfIgnoreCase]);

  

    fieldList.Delimiter := ‘,’;

    fieldList.DelimitedText := fieldNames;

    Result:= fieldList;

  finally

    //fieldList.Free;

  end;

end;

  

//從json取得字段值

class function TJSONDB.getJsonFieldValues(res: ISuperObject):TStringList ;

var

  i: Integer;

  fieldList : TStringList;

  fieldValues :String;

begin

  try

    fieldList := TStringList.Create;

    fieldValues := res.AsObject.getValues.AsString;

    fieldValues := StringReplace(fieldValues, ‘[‘, ”, [rfReplaceAll, rfIgnoreCase]);

    fieldValues := StringReplace(fieldValues, ‘]’, ”, [rfReplaceAll, rfIgnoreCase]);

    fieldValues := StringReplace(fieldValues, ‘”‘, ”, [rfReplaceAll, rfIgnoreCase]);

  

    fieldList.Delimiter := ‘,’;

    fieldList.DelimitedText := fieldValues;

    Result:= fieldList;

  finally

    //fieldList.Free;

  end;

end;

//json轉CDS

class procedure TJSONDB.JsonToClientDataSet(jsonArr: TSuperArray; dstCDS: TClientDataSet);

var

  fieldList: TStringList;

  valuesList: TStringList;

  jsonSrc: string;

  i, j: Integer;

begin

  

  fieldList:= getJsonFieldNames(SO[jsonArr[0].AsJson(False,False)]);

  if (dstCDS.FieldCount = 0) then

  begin

    for i := 0 to fieldList.Count -1 do

    begin

      dstCDS.FieldDefs.Add(fieldList[i],ftString,100, False);

    end;

    dstCDS.CreateDataSet;

    dstCDS.Close;

    dstCDS.Open;

  end;

  try

    dstCDS.DisableControls;

    for i := 0 to jsonArr.Length -1 do

    begin

      jsonSrc:= SO[jsonArr[i].AsJson(False,False)].AsString;

      jsonSrc := StringReplace(jsonSrc, ‘[‘, ”, [rfReplaceAll, rfIgnoreCase]);

      jsonSrc := StringReplace(jsonSrc, ‘]’, ”, [rfReplaceAll, rfIgnoreCase]);

      jsonSrc := StringReplace(jsonSrc, ‘”‘, ”, [rfReplaceAll, rfIgnoreCase]);

      jsonSrc := StringReplace(jsonSrc, ‘{‘, ”, [rfReplaceAll, rfIgnoreCase]);

      jsonSrc := StringReplace(jsonSrc, ‘}’, ”, [rfReplaceAll, rfIgnoreCase]);

      dstCDS.Append;

      for j:= 0 to fieldList.Count -1 do

      begin

        dstCDS.FieldByName(fieldList[j]).AsString:= GetFieldParams(fieldList[j], jsonSrc);

      end;

      dstCDS.Post;

    end;

  

  finally

    dstCDS.EnableControls;

  end;

end;

  

class function TJSONDB.ClientDataSetToJSON(srcCDS: TClientDataSet): UTF8String;

var

  i, j: Integer;

  keyValue:String;

  jsonList:TStringList;

  jsonResult:String;

begin

  if not srcCDS.Active then srcCDS.Open;

  

  try

    jsonList := TStringList.Create;

    srcCDS.DisableControls;

    srcCDS.First;

    while not srcCDS.Eof do

    begin

      keyValue:= ”;

      for i := 0 to srcCDS.FieldDefs.Count -1 do

      begin

        keyValue:= keyValue + Format(‘”%s”:”%s”,’,[srcCDS.Fields[i].FieldName, srcCDS.Fields[i].AsString]);

  

      end;

      jsonList.Add(Format(‘{%s}’,[Copy(keyValue, 0, Length(keyValue)-1)]));

      srcCDS.Next;

    end;

    for i := 0 to jsonList.Count -1 do

    begin

      jsonResult := jsonResult + jsonList[i] + ‘,’;

    end;

    Result:= Utf8Encode(Format(‘[%s]’, [Copy(jsonResult, 0, Length(jsonResult)-1)]));

  finally

    srcCDS.EnableControls;

    jsonList.Free;

  end;

end; 

end.

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/297871.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-28 12:17
下一篇 2024-12-28 12:17

相關推薦

  • int類型變量的細節與注意事項

    本文將從 int 類型變量的定義、聲明、初始化、範圍、運算和類型轉換等方面,對 int 類型變量進行詳細闡述和講解,幫助讀者更好地掌握和應用 int 變量。 一、定義與聲明 int…

    編程 2025-04-29
  • Python3定義函數參數類型

    Python是一門動態類型語言,不需要在定義變量時顯示的指定變量類型,但是Python3中提供了函數參數類型的聲明功能,在函數定義時明確定義參數類型。在函數的形參後面加上冒號(:)…

    編程 2025-04-29
  • Python基本數字類型

    本文將介紹Python中基本數字類型,包括整型、布爾型、浮點型、複數型,並提供相應的代碼示例以便讀者更好的理解。 一、整型 整型即整數類型,Python中的整型沒有大小限制,所以可…

    編程 2025-04-29
  • Python中的Bool類型判斷

    本篇文章旨在講解Python中的Bool類型判斷。在Python中,Bool類型是經常使用的一種類型,因此掌握其用法非常重要。 一、True和False 在Python中,True…

    編程 2025-04-29
  • JSON的MD5

    在Web開發過程中,JSON(JavaScript Object Notation)是最常用的數據格式之一。MD5(Message-Digest Algorithm 5)是一種常用…

    編程 2025-04-29
  • 使用Java將JSON寫入HDFS

    本篇文章將從以下幾個方面詳細闡述Java將JSON寫入HDFS的方法: 一、HDFS簡介 首先,先來了解一下Hadoop分佈式文件系統(HDFS)。HDFS是一個可擴展性高的分佈式…

    編程 2025-04-29
  • Python函數類型有哪些

    本文將從以下幾個方面詳細闡述Python函數類型。 一、內置函數 Python的內置函數是指在Python編程語言中提供的可以直接使用的函數,不需要通過導入模塊等方式引入。 部分常…

    編程 2025-04-29
  • Python變量類型用法介紹

    Python是一種解釋型編程語言,它提供了豐富的數據類型,包括數字、字符串、列表、元組、集合、字典等。Python變量類型的定義是Python程序開發的基礎,本文將從以下幾個方面對…

    編程 2025-04-28
  • Python中的整數類型int類總覽

    本文將從多個方面,對Python中的整數類型int類進行全面介紹和闡述。 一、數據類型及基本操作 在Python中,整數類型的數據類型為int。在Python3.x中,整數類型的范…

    編程 2025-04-28
  • Python查詢變量類型的函數

    本文將從多個方面詳細闡述Python中查詢變量類型的函數,主要包括以下幾點: 一、type()函數 type()函數是Python內置的函數,用於查詢變量的類型。它的使用非常簡單,…

    編程 2025-04-28

發表回復

登錄後才能評論