javascript - 如何摆脱本地 JSON 操作

标签 javascript html json ajax

简介:我知道使用本地 JSON 不是标准,但我正在学习,并且我发现它比创建服务器等更容易。

我有这个 json 文件:

{
"General": {
    "CloseTime": "20:00:00-23:30:00",
    "GeneralActive": "1"
},
"SpecialDays": {
    "SpecialWeekDaysTime": "16:30:00-23:30:00",
    "Sunday": "0",
    "Monday": "0",
    "Tuesday": "0",
    "Wednesday": "0",
    "Thursday": "0",
    "Friday": "0",
    "Saturday": "0",
    "TotalSpecificDays": "1",
    "Day1": "05\/10\/2016 09:30:00-07\/10\/2016 12:45:00"
},
"GeneralAdd": {
    "CloseTime": "21:00:00-23:30:00",
    "GeneralAddActive": "1"
},
"SpecialDaysAdd": {
    "SpecialWeekDaysTimeAdd": "16:30:00-23:30:00",
    "Sunday": "0",
    "Monday": "0",
    "Tuesday": "0",
    "Wednesday": "0",
    "Thursday": "0",
    "Friday": "0",
    "Saturday": "0",
    "TotalSpecificDays": "0",
    "Day1": "01\/01\/0001 00:00:00-01\/01\/0001 03:00:00",
    "Day2": "01\/01\/0001 00:00:00-01\/01\/0001 03:00:00"
},
"Scripts": {
    "Enabled": "1",
     [etc..]
}

有一个 HTML 表单,在用户将文本填充到网页中后,我需要修改文件中的字段值。我认为这样做在逻辑上是正确的,但突然我看到“SpecialDays”和“SpecialDaysAdd”都有天作为键,我如何访问区分不同键的文件?

我是否以正确的方式访问文档?

我是否正确地从 html 中检索信息?

这是我现在的 js 代码:

<script type="text/javascript" src="data.json"></script>
<script type="text/javascript">
var opTime;
var clTime; 
var contOpen; 
var contClos;
var specialDays = [];
var aggDays = [];

var days = 7;     
for (var i = 0; i < days; i++) {
  specialDays.push(false);
  aggDays.push(false);
}

var opTime = document.getElementById("openTimeField").value;
var clTime = document.getElementById("closedTimeField").value; 
var contOpen = document.getElementById("openContinuedField").value; 
var contClos = document.getElementById("closedContinuedField").value; 


var specialDays = [
    document.getElementById("spMonCheck").checked,
    document.getElementById("spTueCheck").checked,
    document.getElementById("spWedCheck").checked,
    document.getElementById("spThuCheck").checked,
    document.getElementById("spFriCheck").checked,
    document.getElementById("spSatCheck").checked,
    document.getElementById("spSunCheck").checked
];

var aggDays = [
    document.getElementById("aggMonCheck").checked,
    document.getElementById("aggTueCheck").checked,
    document.getElementById("aggWedCheck").checked,
    document.getElementById("aggThuCheck").checked,
    document.getElementById("aggFriCheck").checked,
    document.getElementById("aggSatCheck").checked,
    document.getElementById("aggSunCheck").checked
];


text = localStorage.getItem("data.json");
obj = JSON.parse(text);

obj.getElementById("CloseTime").value = clTime.concat(opTime);
obj.getElementById("SpecialWeekDaysTime").value = opTime.concat(clTime);
obj.getElementById("Sunday").value= 
obj.getElementById("Monday").value=
obj.getElementById("Tuesday").value=
obj.getElementById("Wednesday").value=
obj.getElementById("Thursday").value=
obj.getElementById("Friday").value=
obj.getElementById("Sunday").value=
</script>

我不知道我做得是否正确,以及如何继续前进,发送帮助

我是初学者,但我想每个人都会注意到阅读我的代码,提前谢谢您!

最佳答案

您必须将 JSON 字符串转换为对象:

var jsonObject= JSON.parse(jsonString);

...然后您将可以访问jsonObject.SpecialDaysAdd.Monday

稍后,您可以像这样分配值:

jsonObject.SpecialDaysAdd.Monday = "TEST";

一旦完成,您必须将 JSON 对象转换回字符串,如下所示:

var jsonString = JSON.stringify(jsonObject);

这会将 JSON 对象转换为您可以发送、存储等的字符串。

关于javascript - 如何摆脱本地 JSON 操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41617528/

相关文章:

html - 将输入和按钮对齐在一条线上

javascript - JSON.parse 中 JSON 中位置 0 处出现意外标记 <

java - JSONArray 中的 JSONObject 不太正确

javascript - 按钮和切换开关在移动浏览器中不起作用

javascript - 如何让 Angular 2 CLI ng 通过子目录提供服务

javascript - 设置 jQuery 插件的样式 (ClassyCountdown)

javascript - `f()` 和 `new f()` 有什么区别?

javascript - 如何将版本号添加到 HTML 文件(不仅是 css 和 js 文件)

html - 元素大于页面的宽度

json - 无法从具有复合键的域类中获取其余API