I am trying to read data from file.lua.
file.lua contains:
Settings = {
{
["msg"] = "в ич об нид мдд/рдд",
["aut"] = "Lightmur",
["cha"] = "5. Поиск спутников",
}, -- [1]
{
["msg"] = "цлк25н ппал шп маг ршам рдру сова (осколки анрол) 5 слотов",
["aut"] = "Savagemode",
["cha"] = "5. Поиск спутников",
}, -- [2]
{
["msg"] = "В СА25 танк/хил/дд/рдд",
["aut"] = "Dralo",
["cha"] = "5. Поиск спутников",
}, -- [3]
{
["msg"] = "в ич об нид мдд/рдд",
["aut"] = "Lightmur",
["cha"] = "5. Поиск спутников",
}, -- [4]
{
["msg"] = "продам |cffa335ee|Hitem:36919:0:0:0:0:0:0:0:80|h[Багровый рубин]|h|rх6 по 120г",
["aut"] = "Аматин",
["cha"] = "2. Торговля: Город",
}, -- [5]
}
How I'am able to read this file with java code? Where Settings is full log of messages. msg - message, aut - message author, cha - message channel
This is what I'm trying to use: my pom.xml
, java code, and run result
<dependency>
<groupId>com.googlecode.json-simple</groupId>
<artifactId>json-simple</artifactId>
<version>1.1.1</version>
</dependency>
JSONParser jsonParser = new JSONParser();
try (FileReader reader = new FileReader(filePath))
{
//Read JSON file
Object obj = jsonParser.parse(reader);
JSONArray employeeList = (JSONArray) obj;
System.out.println(employeeList);
//Iterate over employee array
//employeeList.forEach( emp -> parseEmployeeObject( (JSONObject) emp ) );
}
//Run result:
Unexpected character (S) at position 2.
at org.json.simple.parser.Yylex.yylex(Yylex.java:610)
at org.json.simple.parser.JSONParser.nextToken(JSONParser.java:269)
at org.json.simple.parser.JSONParser.parse(JSONParser.java:118)
at org.json.simple.parser.JSONParser.parse(JSONParser.java:92)
at Main.main(Main.java:21)
I want to get any advice what should I use. Because after I read this file I want to check what is in variable msg by just calling getMsg()
method;
I cant read this in one string but how I can work with data?
File myObj = new File(filePath);
Scanner myReader = new Scanner(myObj);
while (myReader.hasNextLine()) {
String data = myReader.nextLine();
System.out.println(data);
}
myReader.close();
//result
Settings = {
{
["msg"] = "в ич об нид мдд/рдд",
["aut"] = "Lightmur",
["cha"] = "5. Поиск спутников",
}, -- [1]
{
["msg"] = "цлк25н ппал шп маг ршам рдру сова (осколки анрол) 5 слотов",
["aut"] = "Savagemode",
["cha"] = "5. Поиск спутников",
}, -- [2]
{
["msg"] = "В СА25 танк/хил/дд/рдд",
["aut"] = "Dralo",
["cha"] = "5. Поиск спутников",
}, -- [3]
{
["msg"] = "в ич об нид мдд/рдд",
["aut"] = "Lightmur",
["cha"] = "5. Поиск спутников",
}, -- [4]
{
["msg"] = "продам |cffa335ee|Hitem:36919:0:0:0:0:0:0:0:80|h[Багровый рубин]|h|rх6 по 120г",
["aut"] = "Аматин",
["cha"] = "2. Торговля: Город",
}, -- [5]
}
Process finished with exit code 0
Lua is a programming language, not a data language, and so the file should not be parsed , but instead executed .
You can write a Lua script, to execute this script and encode it as JSON.
lua
and luarocks
using your packages manager).luarocks install json-lua
script.lua
:local JSON = require("JSON") --The JSON library
local source = "file.lua"
local destination = "file.json"
dofile(source)
--Now after executing the file.lua script, the data has been stored in the global table Settings.
--Encode into JSON data.
local jsonData = JSON:encode_pretty(Settings)
--Open the destination file for writing.
local file = assert(io.open(destination, "w"))
--Write the JSON data.
assert(file:write(jsonData))
--Close the file.
file:close()
print("Wrote file.json successfully!")
script.lua
and file.lua
in the same folder, and run script.lua
from there:lua script.lua
file.json
, now you can parse it under Java.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.