【问题标题】:JSON: Create a web page with JSON dataJSON:使用 JSON 数据创建网页
【发布时间】:2014-05-21 15:27:09
【问题描述】:

首先,我对 JSON 非常陌生。我一直在尽可能多地阅读它。虽然我明白了这个概念,但实施它对我来说完全是另一回事。

所以,我有一个从 JSON 网页读取和显示数据的应用程序。例如,我可以提取该网站中显示的时间:http://date.jsontest.com/

使用该网站的 HTML,我通过以下方式将 JSON 对象添加到我的 HTML 页面:

<html>
<body>
<pre>
{
   "score": "30-20"
}
</pre>
</body>
</html>

但是,现在每次我尝试检索分数时,该应用都会引发 JSON 异常。

我的问题是,“将 JSON 对象添加到 HTML 页面中的 pre 标记是在网页上创建 JSON 对象的正确方法吗?”

如果不是,正确的做法是什么?

编辑:这是我在 java 中用来检索 JSON 数据的代码:

    StringBuilder url = new StringBuilder(URL);
    HttpGet get = new HttpGet(url.toString());
    HttpResponse r = client.execute(get);
    int status = r.getStatusLine().getStatusCode();
    if(status==200){
        HttpEntity e = r.getEntity();
        String data = EntityUtils.toString(e);
        //JSONArray timeline = new JSONArray(0);
        JSONObject last = new JSONObject(data);
        return last;
    }
    else{
        Toast.makeText(this, "Error", Toast.LENGTH_SHORT).show();
        return null;
    }

try 语句:

try {
            json = lastTweet();
            return json.getString("time");
            //return "Oh Well";
        } 

谢谢。

【问题讨论】:

  • JSON 文件只有 JSON 标记。无需添加 HTML 标签。您如何尝试检索分数?
  • 除了只有 JSON 标记外,服务器还可以发送 Content-type: application/json 标头来表示类型。
  • 您需要一个具有窗口范围的 javascript 对象,还是只想在页面中将其显示为文本?
  • @Sid,在网络标签打开时按 F5
  • @vp_arth,OP 没有使用 PHP。在 Java 中,在发送响应之前,您可以使用response.setContentType("application/json");

标签: java html json parsing


【解决方案1】:

使用这样的东西:

response.setContentType("application/json");
PrintWriter out = response.getWriter();
String json = "{\"data\": \"test\"}";
out.print(json);
out.flush();

在您的数据服务器上

【讨论】:

  • 对不起,这可能是一个绝对愚蠢的问题,但我应该在哪里添加这个 sn-p?
  • @Sid,你写的是:I added the JSON Object to my HTML page in the following manner,你在哪里打印你的 html 页面?
  • 我正在使用谷歌应用引擎将我的 HTML 页面部署到网络上。当然,这会引起问题。所以,就像你们指出的那样,我不再尝试部署 HTML 文件,而是部署了 JSON 文件。现在的问题是,每当我尝试访问该网站时,它最终都会将一个随机文件下载到我的机器上。
  • 那我的回答不相关
  • gae 是蟒蛇吗?或者这是 SAS?
【解决方案2】:

您的应用程序应该发送Content-type: application/json 标头,并且应该只输出数据本身的字符串表示,这样您的整个页面就是:

{
   "score": "30-20"
}

仅此而已。如果您检查响应标头并查看该页面的源代码,则您提供的example 遵循相同的过程。

解析器失败的原因是页面以&lt; 开头,而第一个非空白字符应该是{

【讨论】:

  • 如果你使用 PHP,并且你有一个 PHP 关联数组 $data 要发送,那么就像 header('Content-type: application/json'); echo json_encode( $data ); 一样简单。
  • 如果它是一个独立文件,我上面的comment 显示了在 Apache 中执行此操作的方法。
  • 这就是我的目标。我将发布分数更新,我的应用程序将从网站中提取数据。我会让我的网站显示分数。那么,如果可能的话,我如何使用这些 JSON 分数对象创建网页?或者 Apache 是唯一的方法吗?谢谢
  • 您尚未指定应用程序如何提取数据,语言将是一个好的开始。您的应用程序是定期将它们保存为单独的文件,还是作为服务器端脚本在用户请求时进行调用?
  • 对不起。我正在使用java来提取数据。我已将代码添加到问题中。客户端将继续尝试获取所述 URL 中存在的 JSON 数据。所以我会在我的网页上添加一个分数更新,应用程序会将所有更新存储在一个数组中。
猜你喜欢
  • 2021-09-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-22
  • 1970-01-01
相关资源
最近更新 更多