JSON Структура для реализации узлов на Hypergraph в Java - PullRequest
0 голосов
/ 10 февраля 2020

Здравствуйте, мне интересно, как я могу создать структуру данных, используя JSON, которая имеет следующие параметры.

  1. Имя (Они будут устанавливаться файлом строка за строкой, которая имеет имя в каждой строке, например ("x1", "x2", "x3" ..., "x100")
  2. нулевое значение с плавающей запятой (этот параметр A объекта мы будем называть)
  3. нулевое значение с плавающей точкой (Мы будем называть этот параметр B объекта)
  4. нулевое значение с плавающей точкой (Мы будем называть этот параметр C объекта)
  5. math.random (); ( Это x-координата точки)
  6. math.random (); (Это y-координата точки)

Поэтому всякий раз, когда текстовый файл читается, его должно создать около 200 таких объектов.

Для реализации этого я создал 3 отдельных файла

main. java

import java.io.File; 
import java.util.Scanner;

public class mainCode {
    public static void main(String[] args)throws Exception 
      { 
          // We need to provide file path as the parameter: 
          // double backquote is to avoid compiler interpret words 
          // like \test as \t (ie. as a escape sequence) 
        jsonWrite myWriter = new jsonWrite();
        myWriter.genNode();
        jsonRead myReader = new jsonRead();
        myReader.readNode("x1");
      }
}

jsonWrite. java

import java.io.File;
import java.io.FileNotFoundException; 
import java.io.PrintWriter; 
import java.util.LinkedHashMap; 
import java.util.Map; 
import java.util.Scanner;

import org.json.simple.JSONArray; 
import org.json.simple.JSONObject; 

public class jsonWrite 
{ 

    public JSONObject jo = new JSONObject(); 
    public JSONArray nArray = new JSONArray(); 
    public Map pointNode = new LinkedHashMap(); 

        public void genNode() throws FileNotFoundException{
                File file = new File("F:\\Java Workspaces\\Files\\myNodes.nodes.txt");   
                Scanner sc = new Scanner(file); 
                String s = new String();
                int index = 0;
                while (sc.hasNextLine()){
                    s = sc.nextLine();
                      if ( index > 6 ){
                        pointNode = new LinkedHashMap(6); 
                        pointNode.put("Name", s); 
                        pointNode.put("A", null);
                        pointNode.put("B", null);
                        pointNode.put("C", null);
                        pointNode.put("X", Math.random()); 
                        pointNode.put("Y", Math.random());  
                        nArray .add(pointNode ); 
                      }
                      index++;
                }

            jo.put(s, nArray ); 
            PrintWriter pw = new PrintWriter("JSONNode.json"); 
            pw.write(jo.toJSONString()); 

            pw.flush(); 
            pw.close();
            System.out.println("JSON Created!");
        }

} 

jsonRead. java

// Java program to read JSON from a file 

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader; 
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Iterator; 
import java.util.LinkedHashMap;
import java.util.Map; 

import java.util.Scanner;

import org.json.simple.JSONArray; 
import org.json.simple.JSONObject; 
import org.json.simple.parser.*; 

public class jsonRead(String s); 
{ 

    public void readNode() throws IOException, ParseException{
        // parsing file "JSONFile.json" 
        Object obj = new JSONParser().parse(new FileReader("JSONFile.json")); 

        // typecasting obj to JSONObject 
        JSONObject jo = (JSONObject) obj; 

        // getting address 
        Map address = ((Map)jo.get(s)); 

        // iterating address Map 
        Iterator<Map.Entry> itr1 = address.entrySet().iterator(); 
        while (itr1.hasNext()) { 
            Map.Entry pair = itr1.next(); 
            System.out.println(pair.getKey() + " : " + pair.getValue()); 
        } 

        // getting phoneNumbers 
        JSONArray myNodeArray = (JSONArray) jo.get(s); 

        // iterating phoneNumbers 
        Iterator itr2 = myNodeArray.iterator(); 

        while (itr2.hasNext())  
        { 
            itr1 = ((Map) itr2.next()).entrySet().iterator(); 
            while (itr1.hasNext()) { 
                Map.Entry pair = itr1.next(); 
                System.out.println(pair.getKey() + " : " + pair.getValue()); 
            } 
        } 
        System.out.println("JSON Opened!");
    }   

} 

есть надежда, что будущие функции, которые будут записаны в основной сможет получить доступ к каждому из e 200 объектов и установите параметр A, параметр B, параметр C и нанесите координату на холст, используя случайно сгенерированную координату xy объекта. Однако я считаю, что моя реализация объектов и способ их чтения неверны.

По сути, реализация того, что я делаю, является гиперграфом. Поэтому, когда я пойму, как создать красивую структуру данных, используя JSON, мне придется сделать то же самое, чтобы создать структуру данных для хранения сетей. Это также будет прочитано через файл и сообщит, какие узлы соединяются друг с другом и являются ли они просто ребрами или гипер ребрами.

1 Ответ

0 голосов
/ 10 февраля 2020

Решение

Таким образом, вместо попытки справиться с этим с помощью JSON я просто выбрал более простой подход и создал классы в java один для узлов и другой для ArrayList из узлов , Затем я создал различные сеттеры и геттеры в обоих и сделал функцию для добавления узла. Эта функция добавит объект типа Node в объект ArrayList. Это сработало великолепно и было именно то, что я хотел.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...