java如何创建Json文件?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java如何创建Json文件?相关的知识,希望对你有一定的参考价值。

新建json文件放在服务器指定目录下,然后读取和写入信息。
我是想把讨论组的聊天信息保存到json文件中,然后进行读取。
一个用户可以有多个讨论组,也就是每个讨论组对应一个json文件。现在想实现创建并存储聊天信息
大神,我现在是想在服务器指定目录下创建文件,并实现文件的写入操作。问题描述的可能不太清楚,sorry。聊天信息的保存用json应该可以吧,我之前存在mysql数据库。1秒用ajax读一次。还往数据库里写,真的很乱。控制事物,可是聊天信息的即时性很重要。也就是说聊天信息存在数据库中不科学。

在服务器指定目录下创建文件,并实现文件的写入操作。
File file = new File("1.json");
保存到服务器根目录 msg文件夹下。用户聊点天发送时,消息保存到 json文件中

谢谢各位的回答,对还要编排格式: 用户名:“张三” word:”吃了么?“ 用户发送一次就追加到json中

如果聊天数据的结构是固定的或变化不大的。
就直接“编排”json字符串。

为要输出的对象增加一个String toJSON()方法
StringBuilder b=new StringBuilder();
b.append(" name:\"");
b.append(username);
b.append("\"");
依次类推
return b.toString();

适合绝大多数情况。

补充:json是做交换格式,查询效率非常低,如果做存储的检索格式就误用了。
就是说“聊天信息的保存用json应该可以吧”还不如你之前的mysql数据库。

json用在客户端往服务端发送的通讯交换数据的格式上。服务端收到后转为数据库中或内存中存放。
参考技术A 先生成map 然后用alibaba的fastjson,附件中的这个包,里头有你意想不到的API
例如:
Map map = ......;
map的结构和要生成的字符串结构一致就行,你的optionset在map里头的结构就是一个list
list optionset= new ArrayList();
Map temp = new HashMap();temp.put('set',xxx);temp.put('value',xxx);
list.add(temp);
....有多少个就添加多少,
然后把list添加到最外层的Map对象中;
map.put('optionset',list); key就是json字符中对应的key
拼装好了map然后就是下一句就搞定了
String josnStr = JSONObject.toJSONString(map);
参考技术B json保存的文件也是XML格式的, 讲取得的信息转化为XML格式的,然后读取的时候 在按照json读取, json.ToXml() 可以转化,具体的代码要自己实现,祝你好运,天天好心情,请采纳 参考技术C 用Gson喽。不过你这样效率有问题吧。

解析 JSON 文件 (JAVA)

【中文标题】解析 JSON 文件 (JAVA)【英文标题】:Parse JSON file (JAVA) 【发布时间】:2019-06-09 14:46:24 【问题描述】:

我想创建一个包含 JSONFile 中所有信息的 JSONObject。

我在网上寻找,只发现如何在这个对象中添加一个人。我想知道是否有任何方法可以将所有人员及其属性添加到一个 JSONObject 中。

public class JsonSingleton extends AbstractSingleton 

    final String personnesJsonPathFile = "personnesJson.json";

    private JsonSingleton() 
    

    public Personne createPersonneWithFileObject( JSONObject jsonObjectPerson ) 

        int idPersonne = Integer.parseInt( ( String ) jsonObjectPerson.get( "id" ) );
        String prenom = ( String ) jsonObjectPerson.get( "prenom" );
        String nom = ( String ) jsonObjectPerson.get("nom");
        Double poids = Double.parseDouble( ( String ) jsonObjectPerson.get( "poids" ) );
        Double taille = Double.parseDouble( ( String ) jsonObjectPerson.get( "taille" ) );
        String rue = ( String ) jsonObjectPerson.get( "rue" );
        String ville = ( String ) jsonObjectPerson.get( "ville" );
        String codePostal = ( String ) jsonObjectPerson.get( "codePostal" );
        return new Personne( idPersonne, prenom, nom, poids, taille, rue, ville, codePostal );
        

    @Override
    protected void extractPersonnesDatas() 

        JSONParser parser = new JSONParser();
        try 
            Object obj = parser.parse( new FileReader ( personnesJsonPathFile ) );

         catch (IOException | ParseException e) 
            e.printStackTrace();
        

    

这是 Json 数据:

"personnes":["id":1,"prenom":"Martin","nom":"Marshall","poids":60,"taille":150,"rue":"rue de Nantes","ville":"Laval","codePostal":"53000",
"id":2,"prenom":"Claire","nom":"Chazal","poids":65,"taille":155,"rue":"rue de Rennes","ville":"Laval","codePostal":"53000",
"id":3,"prenom":"Jacques","nom":"Dupont","poids":90,"taille":180,"rue":"rue des Anges","ville":"Paris","codePostal":"75000",
"id":4,"prenom":"Celine","nom":"Dia","poids":66,"taille":166,"rue":"rue Diderot","ville":"Paris","codePostal":"75000",
"id":5,"prenom":"Remy","nom":"Cheval","poids":88,"taille":200,"rue":"rue du paradis","ville":"Nantes","codePostal":"44000",
"id":6,"prenom":"Nicolas","nom":"Dutrou","poids":40,"taille":150,"rue":"rue Appert","ville":"Nantes","codePostal":"44000",
"id":7,"prenom":"Marie","nom":"Claire","poids":92,"taille":188,"rue":"rue du paradis","ville":"Rouen","codePostal":"76000",
"id":8,"prenom":"Nathalie","nom":"Sage","poids":75,"taille":175,"rue":"rue Appert","ville":"Rouen","codePostal":"76000",
"id":9,"prenom":"Jean","nom":"Dujardin","poids":56,"taille":166,"rue":"rue des sorciers","ville":"Havre","codePostal":"76800",
"id":10,"prenom":"Michel","nom":"Leclerc","poids":100,"taille":202,"rue":"rue du bonneur","ville":"Havre","codePostal":"76800",
"id":11,"prenom":"Julien","nom":"Marshall","poids":65,"taille":144,"rue":"rue de Nantes","ville":"Laval","codePostal":"53000",
"id":12,"prenom":"Julien","nom":"Claire","poids":85,"taille":169,"rue":"rue du Paradis","ville":"Paris","codePostal":"75000",
"id":13,"prenom":"Jacques","nom":"Dupont","poids":87,"taille":172,"rue":"rue des Passeurs","ville":"Paris","codePostal":"75000",
"id":14,"prenom":"Charles","nom":"Hallyday","poids":69,"taille":133,"rue":"rue des Feugrais","ville":"Rouen","codePostal":"76000",
"id":15,"prenom":"Serge","nom":"Lama","poids":78,"taille":174,"rue":"rue des Heureux","ville":"Nantes","codePostal":"44000",
"id":16,"prenom":"Vincent","nom":"Thomas","poids":35,"taille":169,"rue":"rue de Paris","ville":"Rennes","codePostal":"35000",
"id":17,"prenom":"Eric","nom":"Dummat","poids":56,"taille":155,"rue":"rue de Versaille","ville":"Paris","codePostal":"75000",
"id":18,"prenom":"Nicolas","nom":"Samuel","poids":49,"taille":171,"rue":"rue de Saint Louis","ville":"Laval","codePostal":"53000",
"id":19,"prenom":"Rémy","nom":"Guerry","poids":54,"taille":157,"rue":"rue des Sages","ville":"Lyon","codePostal":"69000",
"id":20,"prenom":"Nicolas","nom":"Drapeau","poids":63,"taille":145,"rue":"rue Mitterrand","ville":"Limoges","codePostal":"87000"
]

【问题讨论】:

【参考方案1】:

您可以使用 JSONArray 代替 JSONObject 并在该对象内使用 for 循环进行迭代:

JSONArray array = obj.getJSONArray("value");

for (int i = 0; i < array.length(); i++) 
    System.out.println(arr.getJSONObject(i).getString("prenom"));

在这里您可以找到有关JSONArray的更多详细信息

【讨论】:

感谢您的回答,这是一个学校项目,有方法尊重 public Personne createPersonneWithFileObject( JSONObject jsonObjectPerson ) 将 JSONObject 作为参数

以上是关于java如何创建Json文件?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 java 监听 JSON 文件更新

如何使用 JSON 文件在 HTML 中动态创建元素

Android 如何引用本地json文件

java中如何把输入的数据以json格式保存在文本里面

如何使用简单的 JSON 库将 json 文件读入 java

java自用代码(包括:新建单线程创建文件夹及文件map转为json并将json写入txt文件剪切或改名)