本文目录一览:
- 1、node.js发送的json数据怎么处理,需要返回对象
- 2、几个有效的前端数据处理的方法
- 3、前端json数据进行base64编码,怎么做
- 4、前端怎么解析json
- 5、如何将数据以json格式传给前端
node.js发送的json数据怎么处理,需要返回对象
前端传给服务器的只是json 格式的字符串,使用json_decode,
mixed json_decode ( string $json [, bool $assoc ] )
var_dump(json_decode($json));
var_dump(json_decode($json, true));
如果不带参数,则返回为对象
带上true时,返回数组
foreach($ARR as $k=$v){
echo 'key='.$k.';value='.$v;
}
单独处理每个key 和对应的value就好
几个有效的前端数据处理的方法
一、JSON对象过滤数据(处理复杂数据时可以直接在内部过滤掉)
封装方法:
function getTargetObject(targetObject, propsArray){if(typeof(targetObject) !=="object"|| !Array.isArray(propsArray)) {thrownewError("参数格式不正确"); }constresult = {};Object.keys(targetObject).filter(key=propsArray.includes(key)).forEach(key={ result[key] = targetObject[key]; })returnresult;}
使用方法:
let arr = {a: '1', b:'2', c: '3'}
getTargetObject(arr, ['a', 'b'])
引用网站:
二、数组切割(当后端传来数据过多的时候,将数据切成几个等分,用户下拉的时候再展示)
* 将一个数组分成几个同等长度的数组 * array[分割的原数组] * size[每个子数组的长度]
*/functionsliceArray(array, size) {
varresult = [];
for(varx = 0; x Math.ceil(array.length / size); x++) {
varstart = x * size;
varend = start + size;
result.push(array.slice(start, end));
} returnresult }
引用网站: ;word=js%CA%FD%D7%E9%C7%D0%B7%D6ie=gbk
三、数据过滤(使用JSON.stringify方法)
数据: persons: [
{apple: '苹果'},
{watermelon: '西瓜'},
{lemon: '柠檬'},
{Blueberry: '蓝莓'},
{orange: '橙子'}],
方法: handChange() {
let oneFruits = JSON.stringify(this.persons, function (inx, ite) {
if (inx === 'watermelon' || inx === 'orange') {
return undefined
} else {
return ite } })
this.persons = JSON.parse(oneFruits) }
结果:
四、通过$set给数据注入值并更新视图(解决在vue中新增数据不更新视图的问题)
数据: persons: [
{id: '1',name: '苹果'},
{id: '2',name: '西瓜'},
{id: '3',name: '柠檬'},
{id: '4',name: '蓝莓'} ]
方法: handChange() {
let oneFruits = JSON.parse(JSON.stringify(this.persons[0]))
let twoFruits = JSON.parse(JSON.stringify(this.persons[1]))
let newFruits = {id: '5', name: '葡萄'}
console.log(twoFruits)
this.$set(this.persons, 1, oneFruits) // 将西瓜的位置放上苹果
this.$set(this.persons, 0, twoFruits) // 将苹果的位置方式西瓜
this.$set(this.persons, 4, newFruits) // 添加葡萄并更新视图
console.log(this.persons) }
结果:
前端json数据进行base64编码,怎么做
将二进制文件进行可视化字符串编码,比如BASE64编码(电子邮件附件就是采取的这种编码方法),编码成为文本字符串,再转换为JSON数据。 取出的时候将数据进行解码即可还原图像。 不推荐在JSON里存储图像数据。
前端怎么解析json
不建议使用eval()函数,因为eval()接受任意的字符串,并当作JavaScript代码来处理,这个机制已经有安全隐患了var str='{ "name": "John" }';var obj = eval ('(' + str + ')');alert(obj.name); $.parseJSON()和JSON.parse()函数用于将格式完好的JSON字符串转为与之对应的JavaScript对象。所谓"格式完好",就是要求指定的字符串必须符合严格的JSON格式,例如:属性名称必须加双引号、字符串值也必须用双引号。其次,JSON标准不允许字符串中出现"控制字符",正确写法应该是使用两个反斜杠,以免被JS解析器直接转义。 1、JSON字符串转换为JSON对象var str='{ "name": "John" ,"age": "24" }';var obj = $.parseJSON(str);alert(obj.name); //John var str = '{ "name": "John", "age": "24" }';var obj = JSON.parse(str);alert(obj.name); //John 2、将JSON对象转换为字符串var obj={name: "John", age: "24"};var last=JSON.stringify(obj);alert(last); //'{name: "John", age: "24"}' var obj={name: "John", age: "24"};var last=obj.toJSONString();alert(last); //'{name: "John", age: "24"}' 3、解析读取json对象var str={ "result":{ "age":"33", "id":"2server", "name":"mady" }};alert(str.result.age); //33 var result = $.parseJSON( '[ 1, true, "CodePlayer" ]' );alert( result[1] ); // CodePlayer var result = $.parseJSON( "\"专注于编程开发技术分享\"" );alert(result); //专注于编程开发技术分享
如何将数据以json格式传给前端
将数据以json格式传给前端:
function generateDtb() {
//写入
var txtName = document.getElementById("txtName").value;
//创建数组
var dtb = new Array();
//通过循环把数据写入到数组并返回
for (var i = 0; i firstGroup.length; i++) {
var row = new Object();
row.Name = txtName;
row.fullMoney = firstGroup[i].value;
row.discount = secondGroup[i].value;
dtb.push(row);
}
return dtb;
}
把数组转换成json串传入到后台:
$(function () {
//点击botton1
$("#lbtnOK").click(function () {
var url = "DiscountManger.aspx?ajax=1";
var dtb = generateDtb();
// var strName = document.getElementById("txtName").value;
if (dtb == null)
{ }
else {
//序列化对象
var postdata = JSON.stringify(dtb);
//异步请求
$.post(url, { json: postdata }, function (json) {
if (json) {
jBox.tip("添加成功!", "提示");
location.reload();
}
else {
jBox.tip("添加失败!", "提示");
location.reload();
}
}, "json")
}
});
});
在后台的操作:
首先判断是否需要传输数据
if (!IsPostBack)
{
//判断是否异步请求
if (Request.QueryString["ajax"] == "1")
{
ProcessRequest();
}
在这里进行对数据的处理:
/// summary
/// 处理异步请求
/// /summary
private void ProcessRequest()
{
//存入要填写的策略
ArrayList arrDiscount = new ArrayList();
Response.ContentType = "text/html";
string json = Request.Form["json"];
//反序列化DataTable
if (json == null)
{
return;
}
else
{
DataTable newdtb = Json2Dtb(json);
for (int i = 0; i newdtb.Rows.Count; i++)
{
Entity.StrategyDiscount enStrategyDiscount = new Entity.StrategyDiscount();
//打折方案名
enStrategyDiscount.name = newdtb.Rows[i]["Name"].ToString();
//商店ID
enStrategyDiscount.shopId = long.Parse(LoginInfo.ShopID);
enStrategyDiscount.fullMoney = Convert.ToDecimal(newdtb.Rows[i]["fullMoney"].ToString());
enStrategyDiscount.discount = Convert.ToDecimal(newdtb.Rows[i]["discount"].ToString());
//写入数据到数组
arrDiscount.Add(enStrategyDiscount);
}
//写入数据到数据库
IStrategyBLL strategy = new StrategyBLL();
if (strategy.AddStrategyDiscount(arrDiscount))
{
Response.Write("true");
Response.End();
}
else
{
Response.Write("false");
Response.End();
}
}
这里,我们需要把json转换成datatable
/// summary
/// Json转DataTable
/// /summary
/// param name="json"/param
/// returns/returns
private DataTable Json2Dtb(string json)
{
JavaScriptSerializer jss = new JavaScriptSerializer();
ArrayList dic = jss.DeserializeArrayList(json);
DataTable dtb = new DataTable();
if (dic.Count 0)
{
foreach (Dictionarystring, object drow in dic)
{
if (dtb.Columns.Count == 0)
{
foreach (string key in drow.Keys)
{
dtb.Columns.Add(key, drow[key].GetType());
}
}
DataRow row = dtb.NewRow();
foreach (string key in drow.Keys)
{
row[key] = drow[key];
}
dtb.Rows.Add(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 dtb.Rows)
{
Dictionarystring, object drow = new Dictionarystring, object();
foreach (DataColumn col in dtb.Columns)
{
drow.Add(col.ColumnName, row[col.ColumnName]);
}
dic.Add(drow);
}
return jss.Serialize(dic);
}
然后写回到前台
/// summary
/// 处理异步请求
/// /summary
private void ProcessRequest()
{
Response.ContentType = "text/html";
string json = Request.Form["json"];
//反序列化DataTable
DataTable newdtb = Json2Dtb(json);
//序列化DataTable为JSON
string back = Dtb2Json(newdtb);
Response.Write(back);
Response.End();
}
在前台接受显示:
$(function() {
//点击botton1
$("#botton1").click(function() {
createTable(json);
});
});
//显示Json中的数据
function createTable(json) {
var table = $("table border='1'/table");
for (var i = 0; i json.length; i++) {
o1 = json[i];
var row = $("tr/tr");
for (key in o1) {
var td = $("td/td");
td.text(o1[key].toString());
td.appendTo(row);
}
row.appendTo(table);
}
table.appendTo($("#back"));
}