如何快速将java/json转换成Xtext语言?

How to quickly convert java / json to Xtext langauge?

我正在开发一个处理传入 Json 的应用程序,我想轻松提取 json 数据并将其转换为我使用 Xtext 创建的 DSL 语言。我的目标是以后能够将此数据转换为基于我的字符串。我可能只提取数据并手动将其添加到一个大字符串变量中,但我想以编程方式执行此操作。那么,Xtext 支持吗?有什么方法可以将数据转换为 Xtext 对象,然后再转换为字符串(我正在寻找类似 json object 类)

谢谢!

如果我正确理解了你的问题,那么你已经创建了一个 Xtext 语法 'looks like' JSON.

在那种情况下,Xtext 生成的解析器将能够解析遵循语法规范的文档(这意味着它们都是有效的 JSON 并且根据您的语言的语法有效)。

您要编写的代码如下所示:

Package org.something.other

import com.google.inject.Injector;
import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.xtext.resource.XtextResourceSet;
import org.YourDSL.YourDSLStandaloneSetupGenerated;

public class ParseDocument {

    public static void main(String[] args) throws IOException {
    //First you use dependency injection to register the generated resource factory with EMF
    Injector injector = new ourDSLStandaloneSetupGenerated().createInjectorAndDoEMFRegistration();
    //Get a resource set object 
    XtextResourceSet resourceSet = injector.getInstance(XtextResourceSet.class);
    //Register the generated EMF package
    resourceSet.getPackageRegistry().put
        (YourDSLPackage.eNS_URI, YourDSLPackage.eINSTANCE);
    //Create an new resource with a suitable URI
    Resource resource = 
    resourceSet.getResource(URI.createFileURI("./test.yourdsl"), true);
    //You can now programmatically query and manipulate objects according to the metamodel of you DSL
    MainClass root = (MainClass)resource.getContents().get(0);
    }

也就是说,Xtext 解析器可能完全矫枉过正,具体取决于您要尝试做什么,而像 Jackson 这样的解析器可能更合适。