`

《JSON 入门指南》摘录

    博客分类:
  • Java
阅读更多
学习资料地址:
http://www.ibm.com/developerworks/cn/web/wa-lo-json/

1、JSON简介
    全称 JavaScript Object Notation[原文中该单词拼写有误],轻量级数据交换格式,适合于服务器与JavaScript的交互。
2、JSON数据格式解析
一些特例字符:",\,/和控制字符(\b、、\f、\n、\r、\t)需要额外编码,其他字符可以使(1)用Unicode字符直接输出。
(2)Number可以是整型或者浮点型
(3)Boolean类型表示为true或false
(4)null被表示为null
(5)数组对象,使用[]包含所有元素,每个元素用逗号隔开,元素可以是任意的Value
(6)Object对象使用{}表示,包含一系列无序的Key-Value键值对表示,其中Key只能用String表示
3、JavaScript处理JSON数据
有许多JavaScript库,能直接将服务器返回的 JSON 文本变成一个 JavaScript 变量非常简单(略)
4、服务器端输出JSON数据格式
(1)将String对象编码为JSON格式时,仅需要处理特殊字符。另外,必须使用(")而非(')表示字符串。
(2)将Number表示为JSON
 static String number2Json(Number number) 
 { 
    return number.toString(); 
 } 

(3)将Boolean表示为JSON
 static String boolean2Json(Boolean bool) 
 { 
    return bool.toString(); 
 }

(4)将数组编码为 JSON 格式,可以通过循环将每一个元素编码出来
 static String array2Json(Object[] array) 
 { 
    if (array.length==0) 
        return "[]"; 
    StringBuilder sb = new StringBuilder(array.length << 4); 
    sb.append('['); 
    for (Object o : array) 
    { 
        sb.append(toJson(o)); 
        sb.append(','); 
    } 
    // 将最后添加的 ',' 变为 ']': 
    sb.setCharAt(sb.length()-1, ']'); 
    return sb.toString(); 
 } 

(5)将 Map<String, Object> 编码为 JSON 格式,因为 JavaScript 的 Object 实际上对应的是 Java 的 Map<String, Object>
 static String map2Json(Map<String, Object> map)
 { 
    if (map.isEmpty()) 
        return "{}"; 
    StringBuilder sb = new StringBuilder(map.size() << 4); 
    sb.append('{'); 
    Set<String> keys = map.keySet(); 
    for (String key : keys)
    { 
        Object value = map.get(key); 
        sb.append('\"'); 
        sb.append(key); 
        sb.append('\"'); 
        sb.append(':'); 
        sb.append(toJson(value)); 
        sb.append(','); 
    } 
    // 将最后的 ',' 变为 '}': 
    sb.setCharAt(sb.length()-1, '}'); 
    return sb.toString(); 
 } 

(6)为了统一处理任意的 Java 对象,我们编写一个入口方法 toJson(Object),能够将任意的 Java 对象编码为 JSON 格式
public static String toJson(Object o) 
{ 
    if (o==null) 
        return "null"; 
    if (o instanceof String) 
        return string2Json((String)o); 
    if (o instanceof Boolean) 
        return boolean2Json((Boolean)o); 
    if (o instanceof Number) 
        return number2Json((Number)o); 
    if (o instanceof Map) 
        return map2Json((Map<String, Object>)o); 
    if (o instanceof Object[]) 
        return array2Json((Object[])o); 
    throw new RuntimeException("Unsupported type: " + o.getClass().getName()); 
 } 

5、通过 Servlet 或 MVC 框架输出 JSON 时,需要设置正确的 MIME 类型(application/json)和字符编码。假定服务器使用 UTF-8 编码,则可以使用以下代码输出编码后的 JSON 文本
 response.setContentType("application/json;charset=UTF-8"); 
 response.setCharacterEncoding("UTF-8"); 
 PrintWriter pw = response.getWriter(); 
 pw.write(JsonUtil.toJson(obj)); 
 pw.flush();



分享到:
评论

相关推荐

    Pro JavaFX 8.pdf

    #### 部分内容摘录: - **目录结构**:书籍包括了从入门到高级主题的多个章节,涵盖了JavaFX的基本使用到复杂应用场景。 - **作者简介**:书中介绍了作者及技术审稿人的背景信息。 - **前言与介绍**:提供了对JavaFX...

    1.金融风控知识与架构介绍.ipynb

    1.金融风控知识与架构介绍.ipynb

    基于Plecs仿真的全桥PSFB+ZVS技术参数研究与应用案例 电力电子

    内容概要:本文详细探讨了基于Plecs仿真的全桥移相全桥变换器(PSFB)结合副边同步整流(ZVS)的技术参数研究及其应用案例。文章首先介绍了系统的配置,重点在于确保驱动时序对齐以及优化移相角来实现ZVS。接着讨论了同步整流的关键点,即精确控制副边开关管的驱动时序以避免反向导通的问题。随后提供了参数调整的具体方法,如改变变压器匝比、计算合适的电感值以及选择适当的散热材料。最后分享了一些常见的仿真问题解决方案,比如处理震荡尖峰和轻载情况下的ZVS失效。同时推荐了几款实用的仿真工具和相关文献供进一步学习。 适合人群:从事电力电子设计的专业人士,特别是那些希望深入了解PSFB和ZVS技术的研究人员和技术工程师。 使用场景及目标:适用于需要进行高效电源转换设计的场合,旨在帮助读者掌握PSFB和ZVS的工作原理,提高电路性能,降低损耗并优化系统参数。 其他说明:文中提供的代码片段和参数设定均为实际仿真过程中积累的经验,对于初学者来说是非常宝贵的参考资料。此外,还提到了一些常见错误及其解决办法,有助于减少开发过程中的障碍。

    基于指标预测与对比的我国“双一流”高校专利转化潜力研究.zip

    基于指标预测与对比的我国“双一流”高校专利转化潜力研究.zip

    插秧机系统设计.rar

    插秧机系统设计.rar

    二轴五档变速器设计.rar

    二轴五档变速器设计.rar

    Lq2.shx

    拷贝到Auto CAD的Fonts下

    风扇叶片注射模具设计.rar

    风扇叶片注射模具设计.rar

    CQRN-RIS.pdf

    CQRN-RIS

    使用Java自带的界面开发包完成一个简易的登陆注册界面

    使用Java自带的界面开发包完成一个简易的登陆注册界面

    锤式破碎机.rar

    锤式破碎机.rar

    2024工业互联网技术产业创新报告.pdf

    2024工业互联网技术产业创新报告.pdf

    易优我的足迹插件.zip

    易优我的足迹插件.zip

    四旋翼无人机UAV轨迹跟踪PID控制仿真:位置与姿态控制的对比分析及应用 Matlab

    内容概要:本文详细介绍了四旋翼无人机(UAV)轨迹跟踪的PID控制仿真方法及其应用。首先解释了PID控制的基本原理,即通过比例、积分和微分三项参数调整控制量,确保无人机能够精确沿预定路径飞行。接着讨论了无人机的动力学模型,涵盖位置和姿态控制的具体公式。随后,文中展示了如何利用MATLAB进行仿真,包括PID参数的设置与调整,以及具体的代码实现。最后,通过位置三维图像、姿态角度图像和位置误差分析图,直观展现了PID控制的效果。 适合人群:对无人机控制技术和PID控制感兴趣的科研人员、工程师和技术爱好者。 使用场景及目标:适用于希望深入了解无人机飞行控制机制的研究者,特别是那些想通过仿真手段测试不同控制算法效果的人群。目标是提高无人机的飞行稳定性和准确性。 其他说明:文章不仅提供了理论知识,还附有详细的代码示例和仿真结果,便于读者理解和实践。此外,文章还展望了未来可能采用的改进型控制算法,如模糊PID、滑模控制和基于模型预测控制(MPC),为后续研究指明方向。

    X62W万能铣床PLC电器改造设计.rar

    X62W万能铣床PLC电器改造设计.rar

    基于多智能体系统一致性算法的电力系统分布式经济调度策略复现及其实验分析 一致性算法

    内容概要:本文详细介绍了基于多智能体系统一致性算法的电力系统分布式经济调度策略的复现过程。文中首先介绍了电力系统经济调度的重要性和挑战,然后构建了一个由10个发电单元和19个柔性负荷单元组成的多智能体系统模型。接着,通过初始化智能体状态、定义信息交换协议以及应用一致性算法,逐步实现了分布式经济调度。最后,通过Python代码展示了算法的具体实现,并对实验结果进行了详细的分析,验证了该策略的有效性。 适合人群:从事电力系统研究、分布式控制系统开发的研究人员和技术人员,尤其是对多智能体系统和一致性算法感兴趣的学者。 使用场景及目标:适用于电力系统分布式经济调度的研究和开发项目,旨在提高电力系统的效率和稳定性,确保总功率输出能满足总负荷需求并实现经济调度。 其他说明:本文不仅提供了理论分析,还包括了具体的代码实现和实验数据,有助于读者深入理解和应用该策略。同时,也为未来的研究提供了宝贵的参考和改进方向。

    T68镗床的控制系统的改造设计 电气控制系统PLC改造设计.rar

    T68镗床的控制系统的改造设计 电气控制系统PLC改造设计.rar

    毕业设计-万能表单weui 8.1.16-整站商业源码.zip

    毕业设计-万能表单weui 8.1.16-整站商业源码.zip

    2024年Google数据和AI趋势报告.pdf

    2024年Google数据和AI趋势报告.pdf

Global site tag (gtag.js) - Google Analytics