【发布时间】:2015-06-17 16:40:38
【问题描述】:
我在将一些 JSON 数据解析为原始对象数组时遇到了问题,这是出现的问题 例如,我有这个原始数据(JavaScript):
var points = [];
points = [
{ lat: "38.713852", lng: "-9.145621", data: "<div align=left class=gMapsOverlay><span>Loja centro de Braga</span></div>", options: { icon: '../layout/icon_map_point.png' } },
{ lat: "39.825751", lng: "-7.479642", data: "<div align=left class=gMapsOverlay><span>Apartamento T3</span></div>", options: { icon: '../layout/icon_map_point.png' } },
{ lat: "38.730638", lng: "-9.139604", data: "<div align=left class=gMapsOverlay><span>Apartamento Duplex</span></div>", options: { icon: '../layout/icon_map_point.png' } }
];
我必须完全按照我试图解释的方式执行此操作,我需要将其发送到 ID="hdd_GmapPoints" 的隐藏字段(在这种情况下),我这样做:
private void SetMap () {
string aux = "";
string[] lat = new string[3];
string[] lng = new string[3];
string[] designacao = new string[3];
lat[0] = "38.713852";
lat[1] = "39.825751";
lat[2] = "38.730638";
lng[0] = "-9.145621";
lng[1] = "-7.479642";
lng[2] = "-9.139604";
designacao[0] = "Loja centro de Braga";
designacao[1] = "Apartamento T3";
designacao[2] = "Apartamento Duplex";
for(int i = 0; i < lat.Length; i++) {
aux += "{ lat: \"" + lat[i].ToString().Replace(",", ".") + "\", " +
"lng: \"" + lng[i].ToString().Replace(",", ".") + "\", " +
"data: \"<div align=left class=gmapsoverlay><span>" + designacao[i] + "</span></div>\", " +
"options: { icon: '../layout/icon_map_point.png' } },";
//aux[idx] = "{ lat: \"" + r["latitude"].ToString().Replace(",", ".") + "\", " +
// "lng: \"" + r["longitude"].ToString().Replace(",", ".") + "\", " +
// "data: '<div align=left class=gMapsOverlay><span>" + r["designacao"] + "</span></div>', " +
// "options: { icon: '../layout/icon_map_point.png' } }";
}
if(aux != "") {
//hdd_GmapPoints.Value = aux.ToString();
//hdd_GmapPoints.Value = aux.Substring(0, aux.Length - 1);
var jsonSerializer = new System.Web.Script.Serialization.JavaScriptSerializer();
string json = jsonSerializer.Serialize(aux.ToString().Substring(0, aux.ToString().Length - 1));
hdd_GmapPoints.Value = json;
}
}
然后我必须将其解析回 Javascript 对象数组,这是我的 javascript 代码:
function setMap() {
var points = [];
points = [
{ lat: "38.713852", lng: "-9.145621", data: "<div align=left class=gMapsOverlay><span>Loja centro de Braga</span></div>", options: { icon: '../layout/icon_map_point.png' } },
{ lat: "39.825751", lng: "-7.479642", data: "<div align=left class=gMapsOverlay><span>Apartamento T3</span></div>", options: { icon: '../layout/icon_map_point.png' } },
{ lat: "38.730638", lng: "-9.139604", data: "<div align=left class=gMapsOverlay><span>Apartamento Duplex</span></div>", options: { icon: '../layout/icon_map_point.png' } }
];
//points = [str1.split('%')];
var aux = $("#<%=hdd_GmapPoints.ClientID %>").val();
var points2 = eval(aux);
//var points2 = JSON.parse(aux);
console.log("TYPE 1: " + $.type(points));
console.log("CONTENT 1:" + points);
console.log("TYPE 2: " + $.type(points2));
console.log("CONTENT 2:" + points2);
console.table(points);
}
但它不起作用,因为它向我显示了 supose 对象作为字符串,这是我从 console.log(points2) 得到的;
"{ lat: "38.713852", lng: "-9.145621", data: "Loja centro de Braga", 选项: { icon: '../layout/icon_map_point.png' } },{ lat: "39.825751 ", lng: "-7.479642", 数据: "Apartamento T3", 选项: { icon: '../layout/icon_map_point.png' } },{ lat: "38.730638", lng: "-9.139604", 数据: “Apartamento Duplex”,选项:{ icon: '../layout/icon_map_point.png' } }"
我需要这个来提供什么
console.table(points);
给予
再次,我需要通过隐藏字段将其从 c# 发送到 JQuery,代码必须通过该隐藏字段。
有人知道吗?
【问题讨论】:
-
你能说明
$("#<%=hdd_GmapPoints.ClientID %>").val()是什么吗? -
我不确定你到底在做什么,但如果
console.log(points)给你一个 javascript 对象作为字符串,请执行console.log(JSON.parse(points)) -
它是从底部算起的第二个代码块:"{ lat: "38.713852", lng: "-9.145621", .... etc.... t/icon_map_point.png' } }"
-
我没有使用积分,正如我所说的是原始和想要的产品,以及 3 个对象的数组,但我只得到了我在底部告诉的字符串
标签: javascript c# jquery asp.net json