小结:

1. 使用jquery获取json对象遇到的问题

由于自己对ajax用的还不熟练,之前都是拷贝别人的代码拿来用的,这次自己写的时候倒是碰到好多麻烦一一列举如下:

1.1 在$ 与ajax之间还需要有个点号,即 $.ajax({...... });

1.2 在返回值那里对于返回类型是text或是json格式时,不知道哪种使用eval,哪种使用 (.属性)来解析,正确方式如下

当返回类型是text时,使用eval解析,书写方式如下

var obj = eval("(" + data + ")") ;
var title = obj.title;

当返回类型是json格式时,直接使用点号即可:

var title = data.title;

2. 在java程序中将对象转换为JSON格式遇到的问题

2.1 使用以下的代码将对象转换为json格式时会出现空的属性值显示出来了。

JSONObject json = JSONObject.fromObject(option);

2.2 使用以下的代码将对象转换为json格式时空的属性值就不会显示了。但是即使这样也会产生3中的顺序个问题。

String json = JSON.toJSONString(option);

3. java中将对象转换为json字符串时排列顺序问题

使用2.2的方法虽然转换的时候空的属性值不会出现了,但是排序顺序并不是按照对象加载的先后顺序来输出的。这个感觉比较奇怪。

网上查询了下,由于json是使用HashMap容器的,所以是无序的。所以网上找到别人的类的解决方法来重写了json的toString方法。

粘贴如下,供参考。

    public static String format(Object object) {
Gson gson = new GsonBuilder().setPrettyPrinting().disableHtmlEscaping().create();
JsonParser jp = new JsonParser();
JsonElement je = jp.parse(gson.toJson(object));
String prettyJsonString = gson.toJson(je);
//简单处理function
String[] lines = prettyJsonString.split("\n");
lines = replaceFunctionQuote(lines);
StringBuilder stringBuilder = new StringBuilder();
for (String line : lines) {
stringBuilder.append(line);
}
return stringBuilder.toString();
}
    /**
* 处理字符串中的function和(function(){})(),除{}中的代码外,其他地方不允许有空格
*
* @param lines
* @return
*/
public static String[] replaceFunctionQuote(String[] lines) {
boolean function = false;
boolean immediately = false;
for (int i = 0; i < lines.length; i++) {
String line = lines[i].trim();
if (!function && line.contains("\"function")) {
function = true;
line = line.replaceAll("\"function", "function");
}
if (function && line.contains("}\"")) {
function = false;
line = line.replaceAll("\\}\"", "\\}");
} if (!immediately && line.contains("\"(function")) {
immediately = true;
line = line.replaceAll("\"\\(function", "\\(function");
}
if (immediately && line.contains("})()\"")) {
immediately = false;
line = line.replaceAll("\\}\\)\\(\\)\"", "\\}\\)\\(\\)");
}
lines[i] = line;
}
return lines;
}

最后可以看看最终出来的效果图如下:

最新文章

  1. 面向组合子设计Coder
  2. Apply Newton Method to Find Extrema in OPEN CASCADE
  3. Android Framework
  4. DELL vostro V5460 装mSATA 半高SSD硬盘后装win8.1系统
  5. 使用curl获取Location:重定向后url
  6. 高效开发Android App的10个建议
  7. 彻底解决Google浏览器CSS居中问题
  8. POJ 3617 Best Cow Line(最佳奶牛队伍)
  9. 使用LKDBHelper 插入相同id时候应该是更新数据而不是插入新的数据
  10. js判断手机是的操作系统
  11. [HDOJ1811]Rank of Tetris(并查集、拓扑排序)
  12. Eclipse 配置SSH 详解
  13. Hibernate 事物隔离级别 深入探究
  14. python解释执行原理(转载)
  15. python抓取历年特码开奖记录
  16. 跟我一起读postgresql源码(十二)——Executor(查询执行模块之——Materialization节点(下))
  17. Metasploit模块简述
  18. Git的其他用法
  19. keepalived主备节点都配置vip,vip切换异常案例分析
  20. Kafka查看topic、consumer group状态命令

热门文章

  1. Error: cannot find a valid baseurl for repo: rpmfusion-free 解决办法
  2. 树状数组求第k小的元素
  3. MFC 文件对话框
  4. bootstrap学习总结-04 常用标签2
  5. Rabbitmq -Routeing模式- python编码实现
  6. spring---aop 配置
  7. 10月14日上午PHP环境搭建
  8. 编译安装chkrootkit出现的问题
  9. 重启nginx
  10. int main(int argc, char * argv[]) 里的异常处理