Lily:
Tengo un montón de archivos JSON en el siguiente formato. Quiero trazar un atributo llamado Tiempos de número entero .
test.json
"Rating": {
"ratingValue": "4.636365",
"bestRating": "5",
"worstRating": "1",
"ratingCount": "66"
},
"Timings": {
"cookTime": "PT1H",
"prepTime": "PT10M",
"totalTime": "PT1H10M"
}
Quiero guardar el resultado en otro archivo JSON después de la cartografía. Vamos a decir, totalTime en sincronizaciones es 1h10m entonces asignar esto como " totalTime: 7 ". Si su " 30M " que puede ceder el presente como " totalTime: 3 ". Quiero hacer esto utilizando Java.
producto previsto
"Rating":
{
"ratingValue": "4.636365",
},
"Timings":
{
"totalTime": "7"
}
Anish B.:
He intentado esto:
class Timings {
private String cookTime;
private String prepTime;
private String totalTime;
public String getCookTime() {
return cookTime;
}
public void setCookTime(String cookTime) {
this.cookTime = cookTime;
}
public String getPrepTime() {
return prepTime;
}
public void setPrepTime(String prepTime) {
this.prepTime = prepTime;
}
public String getTotalTime() {
return totalTime;
}
public void setTotalTime(String totalTime) {
this.totalTime = totalTime;
}
@Override
public String toString() {
return "Timings [cookTime=" + cookTime + ", prepTime=" + prepTime + ", totalTime=" + totalTime + "]";
}
}
public class Test {
public static void main(String[] args) throws IOException {
ObjectMapper mapper = new ObjectMapper();
Timings obj = mapper.readValue(new File("C:\\Users\\Anish\\Desktop\\abc.json"), Timings.class);
String totalTime = obj.getTotalTime().split("PT")[1];
int total = 0;
if (totalTime != null && !totalTime.isEmpty()) {
total = returnTotalTime(totalTime);
}
ObjectNode mainNode = mapper.createObjectNode();
ObjectNode timingNode = mapper.createObjectNode();
childNode.put("totalTime", (total / 10));
mainNode.set("Timings", timingNode);
String json = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(rootNode);
System.out.println(json);
}
private static int returnTotalTime(String totalTime) {
if (!totalTime.split("H")[0].isEmpty()) {
if (totalTime.split("H")[0].contains("M")) {
return totalTime.split("H")[0].split("M")[0].isEmpty() ? 0
: Integer.parseInt(totalTime.split("H")[0].split("M")[0]);
}
return totalTime.split("H")[1].split("M")[0].isEmpty() ? 0
: (Integer.parseInt(totalTime.split("H")[0]) * 60)
+ Integer.parseInt(totalTime.split("H")[1].split("M")[0]);
}
return 0;
}
}
abc.json
{
"cookTime": "PT1H",
"prepTime": "PT10M",
"totalTime": "PT1H10M"
}
salida:
{
"Timings" : {
"totalTime" : "7"
}
}
Cuando "totalTime": "PT30M"
, a continuación:
salida:
{
"Timings" : {
"totalTime" : "3"
}
}
Cuando "totalTime": "PT23M"
, a continuación:
salida:
{
"Timings" : {
"totalTime" : "2"
}
}