欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

xml和json必须要一个字段一个字段的解析吗,该如何解决

更新时间: 2014-01-05 02:35:27 责任编辑: Author_N1

 

XML和json必须要一个字段一个字段的解析吗
大家好,我们平时定义协议的时候,喜欢把数据流定义成XML或者json格式,解析的时候,必须要一个字段一个字段的解析吗?
有没有好一点的解析工具,直接序列化或者反序列化?
--参考方法--
dom4j,sax,jdom,都能解析XML,不用自己写文本解析器。
json用jackson,或者google开源的json解析器都是OK的。
--参考方法--
很简单的数据一般直接读成数据流了   比较格式化的xml文件就用Dom解析吧 很简单的
json没怎么用过  看别人用好像也就几行  没感觉
--参考方法--
Dom效率还是蛮高的
--参考方法--
Android 下应该用 Pull,我刚写了一篇博客《Android 下用 Pull 解析和生成 XML》
楼主可以看看:http://blog.csdn.net/joneeky/article/details/17080127
--参考方法--
json的话jackson gson,xml的话jaxb
--参考方法--
根据放射机制,自己写点代码就好了呀
/**
  * 把json转换成集合
  * @param jsonArr 可以是JSONObject对象或json字符串
  * @param clazz
  * @return
  * @throws Exception
  */
public <T> List<T> jsonToList(Object jsonArr, Class clazz) throws Exception {
List list = new ArrayList();
JSONArray json = (jsonArr instanceof JSONArray ? (JSONArray) jsonArr : new JSONArray(jsonArr.toString()));
for (int i = 0; i < json.length(); i++) {
list.add(jsonToBean(json.get(i), clazz));
}
return list;
}


/**
 * 把json转换成对象
 * @param jsonObj 可以是JSONObject对象或json字符串
 * @param clazz
 * @return
 * @throws Exception
 */
public <T> T jsonToBean(Object jsonObj, Class clazz) throws Exception {
JSONObject json = (jsonObj instanceof JSONObject ? (JSONObject) jsonObj : new JSONObject(jsonObj.toString()));
Object object = clazz.newInstance();Method[] methods = clazz.getMethods();
for (int i = 0; i < methods.length; i++) {
Object value = null;try {value = json.get(getProp(methods[i]));} catch (Exception e) {}
setProp(methods[i], object, value);
}
return (T) object;
}

/**
 * 给对象的属性赋值
 * @param method
 * @param object
 * @param value
 * @return
 */
public Object setProp(Method method, Object object, Object value) {
if (null == method 
--参考方法--
 null == object 
--参考方法--
 null == value 
--参考方法--
 !isPropMethod(method, SET_PROP)) {return object;}
String pn = method.getParameterTypes()[0].getName(), val = value.toString();
if (pn.equals("short") 
--参考方法--
 pn.equals(Short.class.getName())) {
try {method.invoke(object, Short.parseShort(val));} catch (Exception e) {}
} else if (pn.equals("int") 
--参考方法--
 pn.equals(Integer.class.getName())) {
try {method.invoke(object, Integer.parseInt(val));} catch (Exception e) {}
} else if (pn.equals("long") 
--参考方法--
 pn.equals(Long.class.getName())) {
try {method.invoke(object, Long.parseLong(val));} catch (Exception e) {}
} else if (pn.equals(String.class.getName())) {
try {method.invoke(object, val);} catch (Exception e) {}
} else if (pn.equals("float") 
--参考方法--
 pn.equals(Float.class.getName())) {
try {method.invoke(object, Float.parseFloat(val));} catch (Exception e) {}
} else if (pn.equals("double") 
--参考方法--
 pn.equals(Double.class.getName())) {
try {method.invoke(object, Double.parseDouble(val));} catch (Exception e) {}
} else if (pn.equals(BigDecimal.class.getName())) {
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:35:27
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/11817/
本文WWW.DOC100.NET DOC100.NET版权所有。