我想读取一个文件并将其存储在一个数组中,然后将数组拆分到任何地方,以便数组中的每个项目都包含拆分的字符串。这就是我的意思,
我的文件包含以下内容:
[
{
"sample1": {
"color": "red",
"date": "2011,
"name": "george"
}
},
{
"sample2": {
"color": "red",
"date": "2012",
"name": "phil"
}
},
我想读取这个文件,例如有数组中的oth元素来表示
{
"sample1": {
"color": "red",
"date": "2011,
"name": "george"
}
},
和第一个元素代表
{
"sample2": {
"color": "red",
"date": "2012",
"name": "phil"
}
},
现在我不太清楚如何做到这一点,我不知道我的数组的大小是多少,我不知道如何访问我的数组的每个元素,我已经从这开始到现在为止
String str;
char[] getArray;
FileReader fr = new FileReader("/sampleProject");
BufferedReader br = new BufferedReader(fr);
br.readLine();
while ((str = br.readLine()) != null) {
str.toCharArray();
str.split("},");
}
System.out.println("Here it is" + str);
br.close();
}
答案 0 :(得分:0)
您最好使用Jackson Mapper将JSON解析为Object,如下所示:
import org.codehaus.jackson.JsonGenerationException;
import org.codehaus.jackson.map.JsonMappingException;
import org.codehaus.jackson.map.ObjectMapper;
public void readJSON(){
MyBean bean;
ObjectMapper mapper = new ObjectMapper();
try {
bean = mapper.readValue(new File("/sampleProject"), MyBean.class);
} catch (JsonGenerationException e) {
e.printStackTrace();
} catch (JsonMappingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
您可以获得有关JSON的更多信息 - > Java对象转换:http://www.mkyong.com/java/how-to-convert-java-object-to-from-json-jackson/
答案 1 :(得分:0)
如果你不知道,数组的大小是什么,你可以使用ArrayList。
str.toCharArray();
和str.split("},")};
可能无法达到预期效果,因为您永远不会将返回的值设为对象。
我没有对此进行测试,但也许它可以满足您的需求:
String str;
char[] getArray;
FileReader fr = new FileReader("/sampleProject");
BufferedReader br = new BufferedReader(fr);
br.readLine();
ArrayList<String> result = new ArrayList<>();
while ((str = br.readLine()) != null) {
String[] array = str.split("},");
for(int i = 0; i< array.length;i++) {
result.add(array[i]);
}
}
System.out.println("Here it is" + str);
br.close();
答案 2 :(得分:0)
你非常接近它。只是一个观点,这是不必要的。如果数据足够小以使其完全保留在内存中,那么这就是您的代码:
StringBuilder data = new StringBuilder();
BufferedReader br = new BufferedReader(new FileReader("/sampleProject"));
// Read data in
String line;
while ((line = br.readLine()) != null) data.append(line);
// Split into packages
for(String package : data.toString().split("}")
System.out.println("Here it is" + package + "}");
br.close();
一件小事是,split
删除了您可以在}
中再次追加的最终System.println()
。
是的,它看起来像JSON,其中存在良好的JSON解析器,例如: here。但如果你不需要它......
当您的数据太大而无法保留在内存中时,情况可能更为相关。您需要设置完全流式解决方案。