我在编码从JSON数据返回的Java特殊字符时遇到麻烦。我正在读取JSON文件“ raw.json”,某些名称给我带来麻烦。
例如,我从JSON文件中读取名称“ MartinPerénya”,并将其推入JsonObjects的JsonArray,并带有UNICODE形式的特殊字符,例如“ Martin Per \ u00e9nya”,但是我的代码将其解释为“ MartinPerÃnya”。谁能帮助我解决这个问题,甚至为我指明正确的方向?我对此并不陌生,谢谢。
package main.service;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.text.SimpleDateFormat;
import java.util.Date;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
public class Service {
public String getAll() throws FileNotFoundException {
JsonParser jsonParser = new JsonParser();
FileReader reader;
reader = new FileReader("raw.json");
JsonObject data = (JsonObject) jsonParser.parse(reader);
JsonArray issues = data.get("issues").getAsJsonArray();
JsonArray processedIssues = new JsonArray();
for(JsonElement i: issues) {
JsonObject object = new JsonObject();
JsonObject issue =(JsonObject) i;
JsonObject fields = issue.get("fields").getAsJsonObject();
//displayName
JsonObject assignee = fields.get("assignee").getAsJsonObject();
String name = assignee.get("displayName").getAsString();
if(assignee.size() !=0) {
if(name.length()==0) {
name = "None";
}
else {
name = assignee.get("displayName").getAsString();
}
}
object.addProperty("name", name);
processedIssues.add(object);
}
JsonObject returnData = new JsonObject();
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String dateString = format.format( new Date());
returnData.addProperty("created", dateString);
returnData.add("featureList", processedIssues);
System.out.println("returnedData - " +returnData);
return returnData.toString();
}
}