最近在写一个接口,请求方传过来的是一个json文件(如下图这种传递格式),以前接口接收的都是json字符串,用String接收即可,这种貌似得解析一下,下面把解析过程写一下,欢迎交流
相对于json字符串,文件格式能传递的字节数更大
代码:
请求方法传递过来的文件,用HttpServletRequest 接收
@Override
public Map<String, Object> ocrBack1( HttpServletRequest requestStr) {
try {
MultipartHttpServletRequest requestStr1 = (MultipartHttpServletRequest) requestStr;
Iterator<String> fileNames = requestStr1.getFileNames();
while (fileNames.hasNext()) {
String next = fileNames.next();
List<MultipartFile> files = requestStr1.getFiles(next);
if (files.size() > 0) {
Iterator<MultipartFile> iterator = files.iterator();
while (iterator.hasNext()) {
MultipartFile next1 = iterator.next();//获取到文件
InputStream inputStream = next1.getInputStream();
String s = ReadFile((FileInputStream) inputStream);
JSONArray jsonArray = JSONArray.fromObject(s);
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
文件流转化为json串:
public String ReadFile(FileInputStream fileInputStream){
BufferedReader reader = null;
String laststr = "";
try{
InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream, "UTF-8");
reader = new BufferedReader(inputStreamReader);
String tempString = null;
while((tempString = reader.readLine()) != null){
laststr += tempString;
}
reader.close();
}catch(IOException e){
e.printStackTrace();
}finally{
if(reader != null){
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return laststr;
}
还有一种读取本地xxx.json文件并解析的,其实就是把本地文件转化成流,然后调用这个工具类即可
public class Util {
public String ReadFile(String Path){
BufferedReader reader = null;
String laststr = "";
try{
FileInputStream fileInputStream = new FileInputStream(Path);
InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream, "UTF-8");
reader = new BufferedReader(inputStreamReader);
String tempString = null;
while((tempString = reader.readLine()) != null){
laststr += tempString;
}
reader.close();
}catch(IOException e){
e.printStackTrace();
}finally{
if(reader != null){
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return laststr;
}
}
(2)Test.java:
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
String JsonContext = new Util().ReadFile("D:\\test\\apkinfo.json");
JSONArray jsonArray = JSONArray.fromObject(JsonContext);
int size = jsonArray.size();
System.out.println("Size: " + size);
for(int i = 0; i < size; i++){
JSONObject jsonObject = jsonArray.getJSONObject(i);
System.out.println("[" + i + "]name=" + jsonObject.get("name"));
System.out.println("[" + i + "]package_name=" + jsonObject.get("package_name"));
System.out.println("[" + i + "]check_version=" + jsonObject.get("check_version"));
}
}
}