使用服务器进行处理JSON 解析器说明介绍

开发
一旦您编写完客户端 JavaScript 代码、允许用户与 Web 表单和 Web 页的交互、收集发送给服务器端程序以做处理所需的信息

在此时,您在客户端所做的选择(比如使用 JavaScript 对象,然后将其转换成 JSON 字符串)必须要与服务器端的选择相匹配,比如使用哪个 API 解码 JSON 数据。管在服务器端使用何种语言,在服务器端处理  JSON 解析器基本上就需要两个步骤。

针对编写服务器端程序所用的语言,找到相应的 JSON 解析器/工具箱/帮助器 API。 使用 JSON 解析器/工具箱/帮助器 API 取得来自客户机的请求数据并将数据转变成脚本能理解的东西。 以上差不多就是目前所应了解的大致内容了。接下来,我们对每个步骤进行较为详细的介绍。

寻找 JSON 解析器或工具箱最好的资源是 JSON 站点(有关链接,请参阅 参考资料)。在这里,除了可以了解此格式本身的方方面面之外,还可以通过各种链接找到 JSON 的各种工具和解析器,从 ASP 到 Erlang,到 Pike,再到 Ruby,应有尽有。#t#

您只需针对自己编写脚本所用的语言下载相应的工具箱即可。为了让服务器端脚本和程序能够使用此工具箱,可以根据情况对其进行选择、扩展或安装(如果在服务器端使用的是 C#、PHP 或 Lisp,则可变性更大)。

例如,如果使用的是 JSON 解析器,可以简单将其升级至 PHP 5.2 并用它完成操作;在 PHP 这个最新版本默认包含了 JSON 扩展。实际上,那也是在使用 PHP 时处理 JSON 的最好方法。如果使用的是 Java servlet,json.org 上的 org.json 包显然就是个不错的选择。

在这种情况下,可以从 JSON Web 站点下载 json.zip 并将其中包含的源文件添加到项目构建目录。编译完这些文件后,一切就就绪了。对于所支持的其他语言,同样可以使用相同的步骤;使用何种语言取决于您对该语言的精通程度,最好使用您所熟悉的语言。

一旦获得了程序可用的资源,剩下的事就是找到合适的方法进行调用。比如,假设为 PHP 使用的是 JSON-PHP 模板:

  1. // This is just a code fragment from a larger PHP server-side script  
  2. require_once('JSON.php');  
  3. $json = new Services_JSON();  
  4. accept POST data and decode it  
  5. $value = $json->decode($GLOBALS['HTTP_RAW_POST_DATA']);  
  6. Now work with value as raw PHP 

通过该模板,可将获得的所有数据(数组格式的、多行的、单值的或 JSON 数据结构中的任何内容)转换成原生 PHP 格式,放在 $value 变量中。如果在 servlet 中使用的是 org.json 包,则会使用如下代码:

  1. public void doPost(HttpServletRequest request, HttpServletResponse response)  
  2.   throws ServletException, IOException {  
  3.  
  4.   StringBuffer jb = new StringBuffer();  
  5.   String line = null;  
  6.   try {  
  7.     BufferedReader reader = request.getReader();  
  8.     while ((line = reader.readLine()) != null)  
  9.       jb.append(line);  
  10.   } catch (Exception e) { //report an error }  
  11.  
  12.   try {  
  13.     JSONObject jsonObject = new JSONObject(jb.toString());  
  14.   } catch (ParseException e) {  
  15.     // crash and burn  
  16.     throw new IOException("Error parsing JSON request string");  
  17.   }  
  18.  
  19.   // Work with the data using methods like...  
  20.   // int someInt = jsonObject.getInt("intParamName");  
  21.   // String someString = jsonObject.getString("stringParamName");  
  22.   // JSONObject nestedObj = jsonObject.getJSONObject("nestedObjName");  
  23.   // JSONArray arr = jsonObject.getJSONArray("arrayParamName");  
  24.   // etc...  

我当然很希望能够分享您的 JSON 解析器使用经验以及您对何种语言更善于在服务器端处理 JSON 数据的高见。您可以访问 Java 和 XML 新闻组(有关链接,请参阅 参考资料 部分)跟我联系。享受 JSON 和文本数据格式的乐趣吧。

责任编辑:chenqingxiang 来源: 博客园
相关推荐

2020-12-02 10:13:45

JacksonJDK解析器

2022-02-14 13:58:32

操作系统JSON格式鸿蒙

2010-04-06 14:34:27

服务器处理器参数解析

2009-12-14 18:59:27

Ruby解析器

2010-01-07 16:37:04

JSON解析器

2010-01-08 13:54:17

JSON 性能

2009-12-22 15:47:03

WCF服务器证书

2009-09-17 13:23:22

NIS服务器

2010-05-21 11:50:54

IIS服务器

2011-06-30 09:22:32

服务器ARM架构x86架构

2009-03-19 09:26:05

RSS解析器MagpieRSS

2009-06-11 10:54:25

GlassFish服务

2011-03-02 10:51:09

vsftpd

2013-01-08 14:07:56

2009-09-17 11:54:36

WSUS服务器

2010-03-29 02:30:33

AMDMagny Cours解析

2010-01-07 17:58:49

JSON数值

2022-06-28 08:17:10

JSON性能反射

2009-12-28 09:58:52

ADO操作

2023-12-30 13:33:36

Python解析器JSON
点赞
收藏

51CTO技术栈公众号