Здравствуйте, мне интересно, как я могу создать структуру данных, используя JSON, которая имеет следующие параметры.
- Имя (Они будут устанавливаться файлом строка за строкой, которая имеет имя в каждой строке, например ("x1", "x2", "x3" ..., "x100")
- нулевое значение с плавающей запятой (этот параметр A объекта мы будем называть)
- нулевое значение с плавающей точкой (Мы будем называть этот параметр B объекта)
- нулевое значение с плавающей точкой (Мы будем называть этот параметр C объекта)
- math.random (); ( Это x-координата точки)
- 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, мне придется сделать то же самое, чтобы создать структуру данных для хранения сетей. Это также будет прочитано через файл и сообщит, какие узлы соединяются друг с другом и являются ли они просто ребрами или гипер ребрами.