【问题标题】:Completely in the dark about JSON [closed]完全不了解 JSON [关闭]
【发布时间】:2012-11-30 02:41:41
【问题描述】:

我一直在阅读一些 JSON 教程,结构和语法对我来说很有意义.. 但我正在尝试做一个需要我做 GET 的项目,这似乎暗示我可以做到这一点JSON。

我读过 JSON 和 AJAX 可以很好地比较,所以我认为这是可能的。如果可以指导我阅读有关如何以这种方式使用 JSON 的内容,或者对其进行解释,我将不胜感激。

谢谢

编辑:请重新打开它...它一开始就被关闭的事实令人震惊。正在进行一场完全合法的讨论。并且没有一个关闭它的人愿意添加任何东西。

【问题讨论】:

  • JSON 是一个 Javascript 对象,而 AJAX 是一种使用 Javascript 发出异步 Web 请求的方法。不知道它们是如何在这里为你交织在一起的。您通常在代码中使用 JSON 来进行 AJAX 调用...如果您愿意,我可以编写一个 jQuery 调用作为示例。
  • @phpisuber01 JSON 不是 javascript 对象。这是 javascript 对象表示法。
  • JSON 基本上是把一个对象变成一个字符串。 AJAX 基本上是在不退出当前页面的情况下向服务器发送和接收东西。
  • JQuery 是我感到困惑的另一件事。它是本机支持的还是他们的一些安装过程?
  • @Joshua - jQuery 是一个库,它可以让你用更少的代码做更多的事情。它本身不受支持。例如,通常你会使用document.getElementById("foo").innerHTML = "bar",但使用 jQuery,$("#foo").html("bar")

标签: javascript jquery json get


【解决方案1】:

您可能正在尝试获取 JSON 而不是 使用 JSON 获取。 JSON 只是响应的“格式”(符号),而不是检索方法。

您标记了,但没有标记(尽管您提到getAJAX 通常是jQuery 的.get() AJAX 调用的同义词。)因为它比普通的简JavaScript 简单得多并且坚持简而言之,以下是使用.getJSON 检索 JSON 数据的示例。

假设服务器上有一个方法返回 JSON 数据(在/my/service.json 找到),效果如下:

{
  "first_name": "Brad",
  "last_name": "Christie"
}

注意:这基本上是输出类似于面向对象语言的“帐户”类的内容,具有两个属性:first_namelast_name,但 注释 在 JSON 中到其他语言(您的 AJAX 查询)可以理解信息)

您可以像这样使用 AJAX 来检索它:

<script type="text/javascript" src="scripts/jquery.js"></script>
<script type="text/javascript">
  $(document).ready(function(){
    $getJSON('/my/service.json'.function(data){
      alert(data.first_name + ' ' + data.last_name); // shows "Brad Christie"
    });
  });
</script>

跟进:我看到您对 C++ 有疑问,所以让我们尝试提供一个工作示例。我假设您使用过 struct,所以假设您有以下内容:

struct stockitem {
  int itemid;
  float price;
  string description; // :grin: this example #include <string> ;-)
} mystock;

mystock.itemid = 21;
mystock.price = 20.12;
mystock.description = "This Year";

如果您要将这些信息发送给某个东西,您可以用很多不同的方式对其进行序列化。其中一种方法是使用 JSON(可能看起来像这样):

{
  "itemid":21,
  "price":20.12,
  "description":"This Year"
}

现在,另一端确实不会知道它是结构体还是类或其他数据类型,但在 javascript 中它将成为具有类似功能和访问权限的基本对象:

var mystock = /*the above JSON */;
alert(mystock + '. ' + mystock.description + ' for $' + mystock.price.toFixed(2));
// above outputs: 21. This Year for $20.12

而且,最重要的是,您只是使用 JSON 来传输(公证)原始结构。

【讨论】:

  • 这很有帮助。我对 JSON 是否只是一种格式或它是否具有自己的功能感到困惑。
  • JSON 只是存储“语言”信息。它只是“我有这些信息,JSON 是我需要存储它的方式,以便下一个人可以按照我的意图阅读它”。跨度>
  • @BradChristie - 更直接:JSON 只是在对象周围加上双引号并使其成为字符串。
  • @Joshua:您可以将 JSON 与 XML、CSV、YAML 等进行比较。它们都是表示数据的方式,并且有库可以将这些格式转换为原生数据类型。人们有时会错误地将 JS object literals 称为 JSON,但这实际上是两双鞋。
  • 感谢您的深入回答。我没想到你会看我的历史并用我熟悉的术语来表达。惊喜。
【解决方案2】:

问题在于 JSON 数据通常在 HTTP 请求的负载中传输。获取请求没有正文,因此没有 JSON(被传输到服务器)。但是,您可以通过 GET 请求接收 JSON 数据。

POST 没有这个限制,因为数据是在请求的负载中发送的。

【讨论】:

  • 如何使用 JSON 对 GET 请求进行排队?
  • JSON 代表 Javascript 对象表示法。它不是一种机制或行动。 JSON 是对象被格式化为文本的方式。您可以将接收 JSON 格式数据的 AJAX 请求排队。
  • 您不能将 JSON 放入 GET 请求的查询字符串中,并适当转义吗? (我并不是说这是一个的想法,只是说它是可能的。)
  • @nnnnnn 是的,您可以对 JSON 编码的对象进行 URL 编码并将其放在查询字符串中。请记住,大多数 URL 限制为 255 个字符,因此您可以传输的数据量非常有限。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-28
  • 1970-01-01
  • 1970-01-01
  • 2011-01-16
  • 2014-05-22
  • 1970-01-01
相关资源
最近更新 更多