首页 > 编程知识 正文

json转clientdataset,json转clientdataset类型

时间:2024-03-07 18:23:11 阅读:331490 作者:WBNZ

本文目录一览:

如何将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.

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。