简体   繁体   English

如何编辑/写回json文件?

[英]How to edit/write back into a json file?

below is my java code to read from a json file 下面是我从json文件读取的Java代码

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.Iterator;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;



public class FileIO {

    @SuppressWarnings("unchecked")
    //public static Showtime [] movie = MoviesListing.movie();

    public void importTxt() {
        int j = 0;
        JSONParser parser = new JSONParser();

        try {
            JSONArray a = (JSONArray) parser.parse(new FileReader("C:/Users/Glambert/Dropbox/java/New folder/perfection/UPdate/json.txt"));

            for (Object o : a)
            {
                JSONObject person = (JSONObject) o;

                MoviesListing.movie[j].assign((String) person.get("moviename"));
                MoviesListing.movie[j].assignShowingStatus((String) person.get("showingstatus"));
                MoviesListing.movie[j].assignSynopsis((String) person.get("synopsis"));
                MoviesListing.movie[j].assignDirector((String) person.get("director"));
                MoviesListing.movie[j].assignCast((String) person.get("cast"));
                MoviesListing.movie[j].assignReviewerRate((double) person.get("reviewerRate"));
                MoviesListing.movie[j].assignPastReviews((String) person.get("pastreviews"));
                MoviesListing.movie[j].assignMovieRating((String) person.get("movierating"));
                MoviesListing.movie[j].assignShowtimes((JSONArray) person.get("showtimes"));

                j++;
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (ParseException e) {
            e.printStackTrace();
        }
    }

It works from reading a json file like this: 通过读取这样的json文件可以正常工作:

[  
  {  
    "moviename":"Goosebumps",
    "showingstatus":"Now Showing",
    "synopsis":"Upset...",
    "director":"Rob Letterman",
    "cast":"Jack Black, Dylan Minnette, Odeya Rush, Amy Ryan",
    "reviewerRate": 3.2 ,
    "pastreviews":"Goosebumps...",
    "movierating":"PG",
    "showtimes":[  
        "09.30",
        "12.30"
    ],
    "job":"Teacher"
  },
  {  
    "moviename":"Bridge of Spies",
    "showingstatus":"Now Showing",
    "synopsis":"Tom Hanks stars..",
    "director":"Steven Spielberg",
    "cast":"Tom Hanks, Mark Rylance",
    "reviewerRate": 3.9,
    "pastreviews":"JBridge...",
    "movierating":"PG-13",
    "showtimes":[  
        "09.40",
        "10.45"
    ],
  }
]

However, I want to write/edit into the txt file in the same, or at least close to this format. 但是,我想以相同的格式(或至少接近此格式)写入/编辑txt文件。 Anyone knows how to do that? 有人知道该怎么做吗?

In the JSON format you have provided, remove the comma after last array: 使用您提供的JSON格式,删除最后一个数组后的逗号:

....
"showtimes":[  
    "09.40",
    "10.45"
    ]
  }
]

Solution: You can use (Download the Jar file from Maven) http://mvnrepository.com/artifact/com.google.code.gson/gson 解决方案:您可以使用(从Maven下载Jar文件) http://mvnrepository.com/artifact/com.google.code.gson/gson

And Create a Bean for Your Data as below: 然后为您的数据创建一个Bean,如下所示:

MovieBean.java
private String moviename;
private String showingstatus;
...
private ArrayList<Double> showtimes;
private String job;

And After that you can use, Gson methods fromJson and toJson for creating JSON to Bean and Bean to JSON respectively. 然后,您可以使用Gson方法fromJsontoJson创建JSON to Bean和Bean to JSON。 You can edit the data in Bean and save it again on the same content file. 您可以在Bean中编辑数据,然后再次将其保存在相同的内容文件中。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM