另外byte[]数组是不存在16进制还是10进制还是2进制的。所谓几进制,只是表现出来给人看的符号的表达方式。无论几进制的,在内存中都是一模一样的。一个办法,先用json_decode解析成对象,然后遍历对象生成数组
如果不支持json_decode函数的话,只能用分割字符串,或者正则匹配了。
但是匹配起来很麻烦
PS 。。你说的是这个json的php数组表现形式么?如果是的话 就是这样的格式
$json = array
(
array
(
'name' => '家电',
'open' => false,
'nodes' => array
(
array('name'=>'电视'),
array('name'=>'冰箱'),
array('name'=>'空调',isParent=>true)
)
),
array
(
)
// more here
);您好,提问者:
{
class:
[{key:value},{key:value}],
class
[{key:value},{key:value}]
}将数据以json格式传给前端:
function generateDtb() {
//写入
var txtName = documentgetElementById("txtName")value;
//创建数组
var dtb = new Array();
//通过循环把数据写入到数组并返回
for (var i = 0; i < firstGrouplength; i++) {
var row = new Object();
rowName = txtName;
rowfullMoney = firstGroup[i]value;
rowdiscount = secondGroup[i]value;
dtbpush(row);
}
return dtb;
}
把数组转换成json串传入到后台:
$(function () {
//点击botton1
$("#lbtnOK")click(function () {
var url = "DiscountMangeraspxajax=1";
var dtb = generateDtb();
// var strName = documentgetElementById("txtName")value;
if (dtb == null)
{ }
else {
//序列化对象
var postdata = JSONstringify(dtb);
//异步请求
$post(url, { json: postdata }, function (json) {
if (json) {
jBoxtip("添加成功!", "提示");
locationreload();
}
else {
jBoxtip("添加失败!", "提示");
locationreload();
}
}, "json")
}
});
});
在后台的 *** 作:
首先判断是否需要传输数据
if (!IsPostBack)
{
//判断是否异步请求
if (RequestQueryString["ajax"] == "1")
{
ProcessRequest();
}
在这里进行对数据的处理:
/// <summary>
/// 处理异步请求
/// </summary>
private void ProcessRequest()
{
//存入要填写的策略
ArrayList arrDiscount = new ArrayList();
ResponseContentType = "text/html";
string json = RequestForm["json"];
//反序列化DataTable
if (json == null)
{
return;
}
else
{
DataTable newdtb = Json2Dtb(json);
for (int i = 0; i < newdtbRowsCount; i++)
{
EntityStrategyDiscount enStrategyDiscount = new EntityStrategyDiscount();
//打折方案名
enStrategyDiscountname = newdtbRows[i]["Name"]ToString();
//商店ID
enStrategyDiscountshopId = longParse(LoginInfoShopID);
enStrategyDiscountfullMoney = ConvertToDecimal(newdtbRows[i]["fullMoney"]ToString());
enStrategyDiscountdiscount = ConvertToDecimal(newdtbRows[i]["discount"]ToString());
//写入数据到数组
arrDiscountAdd(enStrategyDiscount);
}
//写入数据到数据库
IStrategyBLL strategy = new StrategyBLL();
if (strategyAddStrategyDiscount(arrDiscount))
{
ResponseWrite("true");
ResponseEnd();
}
else
{
ResponseWrite("false");
ResponseEnd();
}
}
这里,我们需要把json转换成datatable
/// <summary>
/// Json转DataTable
/// </summary>
/// <param name="json"></param>
/// <returns></returns>
private DataTable Json2Dtb(string json)
{
JavaScriptSerializer jss = new JavaScriptSerializer();
ArrayList dic = jssDeserialize<ArrayList>(json);
DataTable dtb = new DataTable();
if (dicCount > 0)
{
foreach (Dictionary<string, object> drow in dic)
{
if (dtbColumnsCount == 0)
{
foreach (string key in drowKeys)
{
dtbColumnsAdd(key, drow[key]GetType());
}
}
DataRow row = dtbNewRow();
foreach (string key in drowKeys)
{
row[key] = drow[key];
}
dtbRowsAdd(row);
}
}
return dtb;
}
这样,就可以把数据无刷新的写入到数据库。
当然,如果我们有一个从数据库读取的datatable,如果通过json显示在前台呢。
首先,我们需要把datatable转换为json数据
/// <summary>
/// DataTable转Json
/// </summary>
/// <param name="dtb"></param>
/// <returns></returns>
private string Dtb2Json(DataTable dtb)
{
JavaScriptSerializer jss = new JavaScriptSerializer();
ArrayList dic = new ArrayList();
foreach (DataRow row in dtbRows)
{
Dictionary<string, object> drow = new Dictionary<string, object>();
foreach (DataColumn col in dtbColumns)
{
drowAdd(colColumnName, row[colColumnName]);
}
dicAdd(drow);
}
return jssSerialize(dic);
}
然后写回到前台
/// <summary>
/// 处理异步请求
/// </summary>
private void ProcessRequest()
{
ResponseContentType = "text/html";
string json = RequestForm["json"];
//反序列化DataTable
DataTable newdtb = Json2Dtb(json);
//序列化DataTable为JSON
string back = Dtb2Json(newdtb);
ResponseWrite(back);
ResponseEnd();
}
在前台接受显示:
$(function() {
//点击botton1
$("#botton1")click(function() {
createTable(json);
});
});
//显示Json中的数据
function createTable(json) {
var table = $("<table border='1'></table>");
for (var i = 0; i < jsonlength; i++) {
o1 = json[i];
var row = $("<tr></tr>");
for (key in o1) {
var td = $("<td></td>");
tdtext(o1[key]toString());
tdappendTo(row);
}
rowappendTo(table);
}
tableappendTo($("#back"));
}有两种方法实现:
(1)直接转换:
创建JSONArray对象、JSONObject对象,通过put方法将其数据以键值对的形式填充,如例:
//假如有一个Java实体类Person,包括以下属性:phone、sex、married、address。
ArrayList<Person> persons = new ArrayList<Person>();
for (int i = 0; i < 3; i++) {
personsadd(new Person("13867", "女", true, "北京朝阳区"));//填充Java实体类集合
}
JSONArray array = new JSONArray();// Json格式的数组形式
JSONObject obj;//json格式的单个对象形式
for (int i = 0; i < personssize(); i++) {
obj = new JSONObject();
//依次填充每一个Java实体对象
try {
objput("phone", personsget(i)getPhone());//json通过put方式以key-value形式填充
objput("sex", personsget(i)getSex());
objput("married", personsget(i)getMarried());
objput("address", personsget(i)getAddress());
arrayput(obj);//将JSONObject添加入JSONArray
} catch (JSONException e) {
eprintStackTrace();
}
}
(2)通过GSON工具实现:
只需要创建GSON对象,通过toJson方法转换即可。如例:
//模拟Java数据
Person person = new Person("敏敏", 23, "女", "北京市海淀区");
//创建GSON对象
Gson gson = new Gson();
//调用toJson方法即可转换为字符串的json格式
String json = gsontoJson(person);用到ajax了吗?
把json解析,然后在js里用就行了。
var result = eval('('+jsonArr+')'); //jsonArr就是你的数组名字
alert(resulttotal); //获取相应的value
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)