简体   繁体   English

如何从 .lua 文件解析/读取特定数据?

[英]How to parse/read specific data from .lua file?

I am trying to read data from file.lua.我正在尝试从 file.lua 读取数据。
file.lua contains: file.lua 包含:

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?我怎么能用java代码读取这个文件? Where Settings is full log of messages.其中 Settings 是完整的消息日志。 msg - message, aut - message author, cha - message channel msg - 消息,aut - 消息作者,cha - 消息通道
This is what I'm trying to use: my pom.xml , java code, and run result这就是我想要使用的:我的pom.xml 、java 代码和运行结果

<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;因为在我读完这个文件后,我想通过调用getMsg()方法来检查变量 msg 中的内容;
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 . Lua 是一种编程语言,而不是一种数据语言,因此文件不应被解析,而应被执行

You can write a Lua script, to execute this script and encode it as JSON.您可以编写一个 Lua 脚本来执行此脚本并将其编码为 JSON。

  • Start by installing luarocks with the Lua interpreter (luarocks for windows comes bundled with that, if on linux, install lua and luarocks using your packages manager).首先使用 Lua 解释器安装luarocks (windows 的luarocks与它捆绑在一起,如果在 linux 上,请使用包管理器安装lualuarocks )。
  • Install the json-lua library to encode the data as JSON:安装json-lua库以将数据编码为 JSON:
luarocks install json-lua
  • Write the following Lua script in script.lua :script.lua编写以下 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!")
  • Place script.lua and file.lua in the same folder, and run script.lua from there:script.luafile.lua放在同一个文件夹中,然后从那里运行script.lua
lua script.lua
  • The data should be encoded into JSON in the file file.json , now you can parse it under Java.数据应该在文件file.json编码为 JSON,现在您可以在 Java 下解析它。

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

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