实现目标

  读取文件中的json格式数据,一行为一条json格式数据。进行解析封装成实体类。

  通过google的Gson对象解析json格式数据

  我现在解析的json格式数据为:

{"id": "","name": "1.2.3 Diva","has_barcode": true,"barcode_format": "EAN_13","homepage": "http://1-2-3.fr","regions": ["DE","FR"],"other_stores": [],"typos": ["un deux trois","un1deux2trois3"],"logo": "undeuxtrois","android_banner_url": "http://stocardapp.s3-external-3.amazonaws.com/android/banner/undeuxtrois.png","ios_banner_url": "http://stocardapp.s3-external-3.amazonaws.com/ios/banners/undeuxtrois.png","ios_logo_url": "http://stocardapp.s3-external-3.amazonaws.com/ios/icons/undeuxtrois@2x.png"},

代码实现

1、实体类

import java.util.List;

public class ImportBrand
{
private int id;
private String name;
private String has_barcode;
private String barcode_format;
private String homepage;
private List<String> regions;
private List<String> other_stores;
private List<String> typos;
private String logo;
private String android_banner_url;
private String ios_banner_url;
private String ios_logo_url; @Override
public String toString()
{
// TODO Auto-generated method stub
return "id=" + id + ",name = " + name + ",has_barcode = " + has_barcode + ",barcode_format=" + barcode_format +
",homepage =" + homepage + ",regions = " + regions +",logo = " + logo +",android_banner_url = " + android_banner_url +
",ios_banner_url=" + ios_banner_url + ",ios_logo_url = " + ios_logo_url;
} public int getId()
{
return id;
}
public void setId(int id)
{
this.id = id;
}
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
public String getHas_barcode()
{
return has_barcode;
}
public void setHas_barcode(String has_barcode)
{
this.has_barcode = has_barcode;
}
public String getBarcode_format()
{
return barcode_format;
}
public void setBarcode_format(String barcode_format)
{
this.barcode_format = barcode_format;
}
public String getHomepage()
{
return homepage;
}
public void setHomepage(String homepage)
{
this.homepage = homepage;
} public List<String> getRegions()
{
return regions;
} public void setRegions(List<String> regions)
{
this.regions = regions;
} public List<String> getOther_stores()
{
return other_stores;
}
public void setOther_stores(List<String> other_stores)
{
this.other_stores = other_stores;
}
public List<String> getTypos()
{
return typos;
}
public void setTypos(List<String> typos)
{
this.typos = typos;
}
public String getLogo()
{
return logo;
}
public void setLogo(String logo)
{
this.logo = logo;
}
public String getAndroid_banner_url()
{
return android_banner_url;
}
public void setAndroid_banner_url(String android_banner_url)
{
this.android_banner_url = android_banner_url;
}
public String getIos_banner_url()
{
return ios_banner_url;
}
public void setIos_banner_url(String ios_banner_url)
{
this.ios_banner_url = ios_banner_url;
}
public String getIos_logo_url()
{
return ios_logo_url;
}
public void setIos_logo_url(String ios_logo_url)
{
this.ios_logo_url = ios_logo_url;
}
}

2、读取文件

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List; /**
* 读取文件
*
* @author zcr
*
*/
public class ImportFile
{
/**
* 功能:Java读取txt文件的内容 步骤:1:先获得文件句柄 2:获得文件句柄当做是输入一个字节码流,需要对这个输入流进行读取
* 3:读取到输入流后,需要读取生成字节流 4:一行一行的输出。readline()。 备注:需要考虑的是异常情况
*
* @param filePath
* 文件路径[到达文件:如: D:\aa.txt]
* @return 将这个文件按照每一行切割成数组存放到list中。
*/
public static List<String> readTxtFileIntoStringArrList(String filePath)
{
List<String> list = new ArrayList<String>();
try
{
String encoding = "UTF-8";
File file = new File(filePath);
if (file.isFile() && file.exists())
{ // 判断文件是否存在
InputStreamReader read = new InputStreamReader(
new FileInputStream(file), encoding);// 考虑到编码格式
BufferedReader bufferedReader = new BufferedReader(read);
String lineTxt = null; while ((lineTxt = bufferedReader.readLine()) != null)
{
if (isRightFormat(lineTxt))
{
list.add(lineTxt.substring(lineTxt.indexOf("{"),lineTxt.lastIndexOf(',')));
}
}
read.close();
}
else
{
System.out.println("找不到指定的文件");
}
}
catch (Exception e)
{
System.out.println("读取文件内容出错");
e.printStackTrace();
} return list;
} public static void main(String argv[])
{
String filePath = "C:\\Users\\owner\\Desktop\\卓信科技实习\\stores.json";
List<String> dataList = readTxtFileIntoStringArrList(filePath); for(int i = 0 ; i < dataList.size() ; i ++)
{
System.out.println(dataList.get(i));
}
System.out.println(dataList.size());
} /**
* 判断数据是否是合法的格式
* @param jsonStr 带判断的数据
* @return 返回该行是否是正确的格式
*/
public static boolean isRightFormat(String jsonStr)
{
return jsonStr.matches("[\\p{Space}]*[{]{1}.*[}]{1}[,]{1}");
} }

3、方法调用及测试

/**
* 格式化json数据
* @author zcr
*
*/
public class FormatJson
{
public static void main(String[] args)
{
String filePath = "C:\\Users\\owner\\Desktop\\卓信科技实习\\stores.json"; List<ImportBrand> brandList = FormatJson.formatFileListToBrand(filePath);
for(int i = 0 ; i < brandList.size() ; i ++)
{
System.out.println(brandList.get(i));
}
System.out.println(brandList.size());
} /**
* 将json格式数据转换成Import对象
* @param jsonStr 带转换的json对象
* @return json格式数据对应的对象
*/
public static ImportBrand formatFromJsonToObject(String jsonStr)
{
Gson gson = new Gson();
ImportBrand brand = gson.fromJson(jsonStr,ImportBrand.class); return brand;
} /**
* 将String类型的json格式转换为ImportBrand类型的集合
* @param jsonStrList 待转换的json格式List对象
* @return json格式对象转换而成的ImportBrand对象集合
*/
public static List<ImportBrand> formatStringListToBrand(List<String> jsonStrList)
{
List<ImportBrand> listImportBrand = new ArrayList<ImportBrand>();
int size = jsonStrList.size();
for(int i = 0 ; i < size ; i ++)
{
listImportBrand.add(formatFromJsonToObject(jsonStrList.get(i)));
} return listImportBrand;
} /**
* 读取文件,将json格式的数据转换成List对象的ImportBrand
* @param filePath 读取的文件路径
* @return
*/
public static List<ImportBrand> formatFileListToBrand(String filePath)
{
List<String> dataList = ImportFile.readTxtFileIntoStringArrList(filePath);
List<ImportBrand> brandList = formatStringListToBrand(dataList); return brandList;
}
}

  致谢:感谢您的阅读.

解析json格式数据的更多相关文章

  1. 实现android上解析Json格式数据功能

    实现android上解析Json格式数据功能,该源码转载于安卓教程网的,http://android.662p.com ,个人感觉还不错的,大家可以看看一下吧. package com.practic ...

  2. 用GSON解析Json格式数据

    GSON是谷歌提供的开源库,用来解析Json格式的数据,非常好用.如果要使用GSON的话,则要先下载gson-2.2.4.jar这个文件,如果是在Android项目中使用,则在Android项目的li ...

  3. $Java-json系列(一):用GSON解析Json格式数据

    GSON是谷歌提供的开源库,用来解析Json格式的数据,非常好用.如果要使用GSON的话,则要先下载gson-2.2.4.jar这个文件,如果是在Android项目中使用,则在Android项目的li ...

  4. ObjectMapper用于将java对象转换为json格式数据以及JSONObject对象解析json格式数据

    ObjectMapper objectMapper = new ObjectMapper(); //反序列化的时候如果多了其他属性,不抛出异常 objectMapper.configure(Deser ...

  5. C# 解析JSON格式数据

    JSON简介 JSON(全称为JavaScript ObjectNotation) 是一种轻量级的数据交换格式.它是基于JavaScript语法标准的一个子集.JSON采用完全独立于语言的文本格式,可 ...

  6. Android 解析JSON格式数据

    比起XML,JSON主要优势在于它的体积更小,在网络上传输的时候可以更省流量.但缺点在于,它的语义性较差,显示不如XML直观. JSON格式 :  { "name_A" : &qu ...

  7. 【转】C# 解析JSON格式数据

    http://blog.csdn.net/coolszy/article/details/8606803 JSON简介 JSON(全称为JavaScript ObjectNotation) 是一种轻量 ...

  8. C#解析Json格式数据小结

    最近,遇到了一些不同的Json格式的数据,需要做不同处理才能转化为想要得到的结果,这里总结一下. 第一种形式:status中是{}形式,对象 string json = @"{'name': ...

  9. Android中解析JSON格式数据常见方法合集

    待解析的JSON格式的文件如下: [{"id":"5", "version":"1.0", "name&quo ...

随机推荐

  1. Django 模版语言详解

    一.简介 模版是纯文本文件.它可以产生任何基于文本的的格式(HTML,XML,CSV等等). 模版包括在使用时会被值替换掉的 变量,和控制模版逻辑的 标签. 例: {% extends "b ...

  2. 多平台下Modbus通信协议库的设计(一)

    1.背景 1.1.范围 MODBUS 是 OSI 模型第 7 层上的应用层报文传输协议, 它在连接至不同类型总线或网络的设备之间提供客户机/服务器通信. 自从 1979 年出现工业串行链路的事实标准以 ...

  3. [Tool] SourceTree初始化GitFlow遇到错误(git command not found)的解决方案

    [Tool] SourceTree初始化GitFlow遇到错误(git command not found)的解决方案 问题情景 使用SourceTree,可以方便开发人员快速的套用GitFlow开发 ...

  4. ScrollMagic – 酷毙了!超炫的页面滚动交互效果

    ScrollMagic 是一款 jQuery 插件,它让你可以像使用进度条一样使用滚动条.如果你想在特定的滚动位置开始一个动画,并且让动画同步滚动条的动作,或者把元素粘在一个特定的滚动位置,那么这款插 ...

  5. JSCapture – 基于 HTML5 实现的屏幕捕捉库

    JSCapture 是用纯 JavaScript 和 HTML5 实现的屏幕捕捉库.它可以让从您的浏览器中截图和记录在桌面的视频.JSCapture 使用 getUserMedia 来实现屏幕捕获.目 ...

  6. JavaScript事件机制——细思极恐

    JavaScript事件机制,也有让人深思的东西.在一开始未深入了解,我头脑里有几个问题发出: 1. 自下而上(冒泡)事件怎么写,自上而下(捕获)又是怎么写? 2. 捕获型和冒泡型同时设置,谁生效? ...

  7. C# PPT 查找替换

    public void ReplaceAll(string OldText,string NewText)        {            int num = PageNum();       ...

  8. 2013 Visual Studio Magazine读者选择奖界面框架类获奖情况

    2013 Visual Studio Magazine读者选择奖已经正式揭晓了!据了解,截至今年此奖项已经评选了21次,非常值得.NET开发人员信赖和参考.此次评选共有400多个产品角逐28个分类的奖 ...

  9. linux下发布的执行文件崩溃的问题定位 心得一则

    C++ Release版本发布到客户处执行时,如果程序崩溃,有什么办法能够快速的确认程序的问题呢? 如果能gdb调试的话,比较简单了,可以使用gdb命令,类似如下: gdb ##set args ** ...

  10. Android自定义控件2--优酷菜单界面初始化

    本文开始将逐步去实现下面优酷菜单的效果: 本文地址:http://www.cnblogs.com/wuyudong/p/5912538.html,转载请注明源地址. 本文首先来实现优酷菜单界面初始化工 ...