我想将JSON文件转换为字符串。
我希望loadFromJSON()方法从JSON文件中获取以下所有内容并将其删除:
花括号
报价
冒号
逗号
支架。
然后该方法将String拆分为一个没有任何空格的String数组。
我希望返回的字符串为:
String worldName = "worldOne";
然后可以分成比特,如下所示:
int[] data = {0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2};
,
int worldWidth = 5;
,
int worldHeight = 3;
,
int xSpawn = 5;
,
int ySpawn = 5;
,
{
"gameWorlds": [
{
"worldName": "worldOne",
"data": [
0, 0, 0, 0, 0,
1, 1, 1, 1, 1,
2, 2, 2, 2, 2
],
"worldWidth": 5,
"worldHeight": 3,
"xSpawn": 5,
"ySpawn": 5
},
{
"worldName": "worldOne",
"data": [
0, 0, 0, 0, 0,
1, 1, 1, 1, 1,
2, 2, 2, 2, 2
],
"worldWidth": 5,
"worldHeight": 3,
"xSpawn": 5,
"ySpawn": 5
}
]
}
我当前的JSON文件:
public void loadFromJSON(String fileName) {
String tempFile = TinyFile.loadFile("file.json");
String jsonFile = tempFile.replaceAll("\\}", " ") + tempFile.replaceAll("\\{", " ") + tempFile.replaceAll("\"", " ") +
tempFile.replaceAll(",", " ") + tempFile.replaceAll("\\]", " ") + tempFile.replaceAll("\\[", " ") + tempFile.replaceAll(":", " ");
String[] tokens = jsonFile.split("\\s+");
for (int i = 0; i < tokens.length; i++) {
TinyDebug.debug("tokens", tokens[i]);
}
}
我该怎么做?
以下是我对该问题的尝试,该问题目前无效且需要修复。
将JSON文件转换为字符串[]:
public static String loadFile(String filePath) {
StringBuilder builder = new StringBuilder();
try {
BufferedReader bReader = new BufferedReader(new FileReader(filePath));
String line;
while((line = bReader.readLine()) != null) {
builder.append(line);
}
e.close();
} catch (IOException e) {
e.printStackTrace();
Util.printErrorMessage("File Not Found");
}
return builder.toString();
}
TinyFile.java中的LoadFile():
(let [v [1 2 3 4 5 6 7]]
(doseq [i (range (count v))
j (range (inc i) (count v))]
(println (v i) (v j))))
如果您有更好的解决方案,例如从JSON文件中读取的方法,请在下面发布。
答案 0 :(得分:2)
您可以使用jackson库:
ObjectMapper mapper = new ObjectMapper();
String jsonInString = "{ 'login' : 'user1', 'pass' : 'test' }";
User user = mapper.readValue(new File("~/user.json"), User.class);
然后覆盖toString()
类的方法User
:
@Override
public String toString() {
return "login=" + this.login + ", pass=" + this.pass;
}
答案 1 :(得分:1)
最好的方法是编写JSO类并使用Jackson解析器解析它。
您可以通过多种方式解析Json。在这里,我们使用json-simple来解析json
{
,则应创建JSONObject 如果找到[
,则创建JSONArray
JSONParser解析器= new JSONParser();
String ss = "{\"gameWorlds\":[{\"worldName\":\"worldOne\",\"data\":[0,0,0,0,0,1,1,1,1,1,2,2,2,2,2],\"worldWidth\":5,\"worldHeight\":3,\"xSpawn\":5,\"ySpawn\":5}]}";
Object obj;
try {
obj = parser.parse(ss);
JSONObject base = (JSONObject) obj;
JSONArray arrayGameWorld = (JSONArray) base.get("gameWorlds");
for (int index = 0; index < arrayGameWorld.size(); index++) {
JSONObject worldHeight = (JSONObject) arrayGameWorld.get(index);
Long value = (Long) worldHeight.get("worldHeight");
System.out.println(value);
JSONArray dataArray = (JSONArray) worldHeight.get("data");
System.out.println(obj);
}
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}