android自助点单APP(1)Fastjson解析
2015-04-27 23:09
826 查看
自己父母经营着一个小吃店铺,生意忙的时候点菜往往是来不及,尤其碰到个别点单比较慢的顾客。。从0开始学习android也有一段时间了,也该写点东西出来。于是构思了这个APP。初步设想是使用二维码在店铺内进行宣传,顾客扫描二维码下载安装app,然后进行点单。同时考虑到ios用户,这就需要使用web或者ios客户端,可惜心有余而力不足,这一部分项目可能要延后了。。
进入正文,APP使用Http协议与web服务器进行交流,在首次每次打开客户端时会首先连接服务器下载FoodMenu菜单,此处用到json解析。
首先建立Food.java以及FoodJSONObject.java。
首先下载Fastjson,这个随便度娘一下就有了。需要注意的是最好将javadoc以及source一起下载了,不然木有注释。。。
也可以在我这里下载http://download.csdn.net/detail/lvkang20050063/8639319
Food类
FoodJSONObject类
其实就是将Food作为一个List保存在FoodJSONObject中,当然其中还能增加很多属性。
以上就是foodmenu使用json在object类和string字符串之间转化需要的类文件。
FoodOrder类
OrderFoodJSONObject类
这两个类文件是用于顾客点单之后将orderfood转化成string,服务器利用fastjson解析成对应的orderfood。这样就实现了业务的基本功能。
例如以下转换
此时str_json便是包含了这个food所有信息的字符串。
如果结合数据库,将多条food记录保存在字符串中就是如下代码:
包含两个food的字符串json处理结果如下
客户端收到该字符串后,调用
此时便得到了foodList,进一步使用
至此完成了从object到
下一步我要做一个listView的适配器,将这个arraylist中的数据填充到自定义listview
进入正文,APP使用Http协议与web服务器进行交流,在首次每次打开客户端时会首先连接服务器下载FoodMenu菜单,此处用到json解析。
首先建立Food.java以及FoodJSONObject.java。
首先下载Fastjson,这个随便度娘一下就有了。需要注意的是最好将javadoc以及source一起下载了,不然木有注释。。。
也可以在我这里下载http://download.csdn.net/detail/lvkang20050063/8639319
Food类
package com.lvkang.myfoodtoandroid.json; import java.io.Serializable; public class Food implements Serializable { private static final long serialVersionUID = 1L; //定义各种属性的字符串,后面会用到。 public static final String FOOD_ID = "foodId"; public static final String FOOD_NAME = "foodName"; public static final String FOOD_UNIT_PRICE = "foodUnitPrice"; public static final String FOOD_REMAIN = "foodRemain"; public static final String FOOD_REMARKS = "foodRemarks"; public static final String FOOD_ATTR = "foodAttr"; //定义成员变量(foodRemarks这个变量命名有点不妥。。。) int foodId; String foodName; float foodUnitPrice; int foodRemain; String foodRemarks; int foodAttr; //使用fastjson解析式一定要用默认的构造函数,不然会报异常。 public Food() { } //这个构造函数后面一直没用到,瞎了。。。 Food(int foodId, String foodName, float foodUnitPrice, int foodRemain, String foodRemarks, int foodAttr) { this.foodId = foodId; this.foodName = foodName; this.foodUnitPrice = foodUnitPrice; this.foodRemain = foodRemain; this.foodRemarks = foodRemarks; this.foodAttr = foodAttr; } //方便一些测试 @Override public String toString() { return "foodId: " + foodId + "foodName: " + foodName + "foodUnitPrice: " + foodUnitPrice + "foodRemain: " + foodRemain + "foodRemarks: " + foodRemarks + "foodAttr: " + foodAttr; } //很无聊的getter和setter直接用工具生成。。。 public int getFoodId() { return foodId; } public void setFoodId(int foodId) { this.foodId = foodId; } public String getFoodName() { return foodName; } public void setFoodName(String foodName) { this.foodName = foodName; } public float getFoodUnitPrice() { return foodUnitPrice; } public void setFoodUnitPrice(float foodUnitPrice) { this.foodUnitPrice = foodUnitPrice; } public int getfoodRemain() { return foodRemain; } public void setfoodRemain(int foodRemain) { this.foodRemain = foodRemain; } public String getFoodRemarks() { return foodRemarks; } public void setFoodRemarks(String foodRemarks) { this.foodRemarks = foodRemarks; } public int getAttr() { return foodAttr; } public void setAttr(int foodAttr) { this.foodAttr = foodAttr; } }
FoodJSONObject类
package com.lvkang.myfoodtoandroid.json; import java.util.ArrayList; import java.util.List; public class FoodJSONObject { private int id = 0; public FoodJSONObject() { } public int getId() { return id; } public void setId(int id) { this.id = id; } public List<Food> getFoodList() { return foodList; } public void setFoodList(List<Food> foodList) { this.foodList = foodList; } private List<Food> foodList = new ArrayList<Food>(); }
其实就是将Food作为一个List保存在FoodJSONObject中,当然其中还能增加很多属性。
以上就是foodmenu使用json在object类和string字符串之间转化需要的类文件。
FoodOrder类
package com.lvkang.myfood.json; import java.io.Serializable; public class OrderFood implements Serializable { private static final long serialVersionUID = 2L; public static final String Order_FOOD_ID = "orderFoodId"; public static final String Order_FOOD_NAME = "orderFoodName"; public static final String Order_FOOD_UNIT_PRICE = "orderFoodUnitPrice"; // public static final String Order_FOOD_REMAIN = "orderFoodRemain"; // public static final String Order_FOOD_REMARKS = "orderFoodRemarks"; public static final String Order_FOOD_ATTR = "orderFoodAttr"; public static final String Order_FOOD_NUM = "orderFoodNum"; private int orderFoodId; private String orderFoodName; private float orderFoodUnitPrice; // int orderFoodRemain; // String orderFoodRemarks; private int orderFoodAttr; private int orderFoodNum; // 使用fastjsony一定要注意要有无参构造函数。 OrderFood() { } OrderFood(int foodId, String foodName, float foodUnitPrice,int foodAttr, int orderFoodNum) { this.orderFoodId = foodId; this.orderFoodName = foodName; this.orderFoodUnitPrice = foodUnitPrice; // this.orderFoodRemain = foodRemain; // this.orderFoodRemarks = foodRemarks; this.orderFoodAttr = foodAttr; this.orderFoodNum = orderFoodNum; } @Override public String toString() { // return "foodId: " + orderFoodId + "foodName: " + orderFoodName // + "foodUnitPrice: " + orderFoodUnitPrice + "foodRemain: " // + orderFoodRemain + "foodRemarks: " + orderFoodRemarks + "foodAttr: " // + orderFoodAttr; return "orderFoodId: " + orderFoodId + " orderFoodName: "+orderFoodName+ " orderFoodnum: " + orderFoodNum+ " orderFoorUnitPrice: "+orderFoodUnitPrice+ " orderFoodAttr: "+orderFoodAttr; } public int getOrderFoodId() { return orderFoodId; } public void setOrderFoodId(int orderFoodId) { this.orderFoodId = orderFoodId; } public int getOrderFoodNum() { return orderFoodNum; } public void setOrderFoodNum(int orderFoodNum) { this.orderFoodNum = orderFoodNum; } public String getOrderFoodName() { return orderFoodName; } public void setOrderFoodName(String orderFoodName) { this.orderFoodName = orderFoodName; } public float getOrderFoodUnitPrice() { return orderFoodUnitPrice; } public void setOrderFoodUnitPrice(float orderFoodUnitPrice) { this.orderFoodUnitPrice = orderFoodUnitPrice; } public int getOrderFoodAttr() { return orderFoodAttr; } public void setOrderFoodAttr(int orderFoodAttr) { this.orderFoodAttr = orderFoodAttr; } }
OrderFoodJSONObject类
package com.lvkang.myfood.json; import java.util.ArrayList; import java.util.List; public class OrderFoodJSONObject { private int orderId; private int orderTableId=-1; private long orderDateTime=-1l; private String orderCustomerName="unkown"; private String orderRemarks=null; private List<OrderFood> foodList = new ArrayList<OrderFood>(); public List<OrderFood> getOrderFoodList() { return foodList; } public void setFoodList(List<OrderFood> foodList) { this.foodList = foodList; } public int getOrderTableId() { return orderTableId; } public void setOrderTableId(int orderTableId) { this.orderTableId = orderTableId; } public long getOrderDateTime() { return orderDateTime; } public void setOrderDateTime(long orderDateTime) { this.orderDateTime = orderDateTime; } public String getOrderCustomerName() { return orderCustomerName; } public void setOrderCustomerName(String orderCustomerName) { this.orderCustomerName = orderCustomerName; } public int getOrderId() { return orderId; } public void setOrderId(int orderId) { this.orderId = orderId; } public List<OrderFood> getFoodList() { return foodList; } public String getOrderRemarks() { return orderRemarks; } public void setOrderRemarks(String orderRemarks) { this.orderRemarks = orderRemarks; } }
这两个类文件是用于顾客点单之后将orderfood转化成string,服务器利用fastjson解析成对应的orderfood。这样就实现了业务的基本功能。
例如以下转换
Food food = new Food(); food.setAttr(result.getInt(Food.FOOD_ATTR)); food.setFoodId(result.getInt(Food.FOOD_ID)); food.setFoodName(result.getString(Food.FOOD_NAME)); food.setfoodRemain(result.getInt(Food.FOOD_REMAIN)); food.setFoodRemarks(result.getString(Food.FOOD_REMARKS)); food.setFoodUnitPrice(result.getFloat(Food.FOOD_UNIT_PRICE)); str_json = JSON.toJSONString(food);
此时str_json便是包含了这个food所有信息的字符串。
{'attr':0,'foodId':1,'foodName':'鸡腿','foodRemain':1,'foodRemarks':'元/一个','foodUnitPrice':5}
如果结合数据库,将多条food记录保存在字符串中就是如下代码:
FoodJSONObject fJO = new FoodJSONObject(); while (result.next()) { Food food = new Food(); food.setAttr(result.getInt(Food.FOOD_ATTR)); food.setFoodId(result.getInt(Food.FOOD_ID)); food.setFoodName(result.getString(Food.FOOD_NAME)); food.setfoodRemain(result.getInt(Food.FOOD_REMAIN)); food.setFoodRemarks(result.getString(Food.FOOD_REMARKS)); food.setFoodUnitPrice(result.getFloat(Food.FOOD_UNIT_PRICE)); fJO.getFoodList().add(food); } String str=""; str=JSON.toJSONString(FJO,SerializerFeature.UseSingleQuotes);
包含两个food的字符串json处理结果如下
{'foodList':[{'attr':0,'foodId':1,'foodName':'鸡腿','foodRemain':1,'foodRemarks':'元/一个','foodUnitPrice':5},{'attr':0,'foodId':2,'foodName':'鸡翅','foodRemain':1,'foodRemarks':'元/两个','foodUnitPrice':5}],'id':0}
客户端收到该字符串后,调用
FoodJSONObject getfood = JSON.parseObject(stringJSON, FoodJSONObject.class); List<Food> foodList = getfood.getFoodList();
此时便得到了foodList,进一步使用
ArrayList<HashMap<String, Object>> foodMenuArrayList = new ArrayList<HashMap<String, Object>>(); for (int i = 0; i < foodList.size(); i++) { HashMap<String, Object> map = new HashMap<String, Object>(); Food food = new Food(); map.put(Food.FOOD_ID, foodList.get(i).getFoodId()); map.put(Food.FOOD_NAME, foodList.get(i).getFoodName()); map.put(Food.FOOD_UNIT_PRICE, foodList.get(i).getFoodUnitPrice()); map.put(Food.FOOD_REMAIN, foodList.get(i).getfoodRemain()); map.put(Food.FOOD_REMARKS,foodList.get(i).getFoodRemarks());map.put(Food.FOOD_ATTR,foodList.get(i).getAttr());map.put("number", 0); foodMenuArrayList.add(map); }
至此完成了从object到
ArrayList<HashMap<String, Object>>的转化。
下一步我要做一个listView的适配器,将这个arraylist中的数据填充到自定义listview
相关文章推荐
- Android使用GSON和FASTJSON解析服务器返回的JSON数据
- Android进阶笔记14:3种JSON解析工具(org.json、fastjson、gson)
- Android中Json数据解析(二)--使用Gson、Jackson和FastJson解析Json数据
- Android笔记之fastjson解析
- Android Jackson、Gson、FastJson解析框架对比
- Android中FastJson解析json1
- Android学习系列(20)--App数据格式之解析Json
- FastJson源码解析:序列化(1.1.45.android)
- fastjson-1.1.34.android,和xUtils-2.6.13简单用法1,将网络新闻转化到app
- Android 使用fastjson解析json,java数组判断为空的方法
- android json解析(fastjson,Gson等)
- Android商城开发系列(六)——使用 OkHttpUtils 请求网络 + 使用 fastjson解析数据
- Android总结之json解析(FastJson Gson 对比)
- Android学习(二):解析JSON,GSON,FASTJSON;JDBC编程
- Android JSON解析库Gson和Fast-json的使用对比和图书列表小案例
- Android 利用fastjson进行json解析
- Android 中Json解析的几种框架(Gson、Jackson、FastJson、LoganSquare)使用与对比
- Android_Json_FastJson数据解析
- Android之json解析(FastJson Gson 对比)
- Android_Json_FastJson数据解析