`
kanpiaoxue
  • 浏览: 1781600 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

jgrapht的json序列化和反序列化

 
阅读更多

 

 

public static void test025() throws Exception {
        /**
         * <pre>
         *          1
         *        |    |
         *        2    3
         *          |
         *          4
         *          |
         *          7
         * </pre>
         */
        Graph<Integer, DefaultEdge> g = new DirectedAcyclicGraph<Integer, DefaultEdge>(DefaultEdge.class);
        g.addVertex(1);
        g.addVertex(2);
        g.addVertex(3);
        g.addVertex(4);
        g.addVertex(7);

        g.addEdge(1, 2);
        g.addEdge(1, 3);
        g.addEdge(2, 4);
        g.addEdge(3, 4);
        g.addEdge(4, 7);

        ComponentNameProvider<Integer> vertexIdProvider = new ComponentNameProvider<Integer>() {
            public String getName(Integer i) {
                return String.valueOf(i);
            }
        };

        GraphExporter<Integer, DefaultEdge> exporter =
                new JSONExporter<Integer, DefaultEdge>(vertexIdProvider);
        Writer writer = new StringWriter();
        exporter.exportGraph(g, writer);
        IOUtils.closeQuietly(writer);
        String json = writer.toString();
        System.out.println(json);
        // {"creator":"JGraphT JSON
        // Exporter","version":"1","nodes":[{"id":"1"},{"id":"2"},{"id":"3"},{"id":"4"},{"id":"7"}],"edges":[{"id":"1","source":"1","target":"2"},{"id":"2","source":"1","target":"3"},{"id":"3","source":"2","target":"4"},{"id":"4","source":"3","target":"4"},{"id":"5","source":"4","target":"7"}]}

        VertexProvider<Integer> vertexProvider = new VertexProvider<Integer>() {

            @Override
            public Integer buildVertex(String id, Map<String, Attribute> attributes) {
                return Integer.valueOf(id);
            }
        };
        EdgeProvider<Integer, DefaultEdge> edgeProvider = new EdgeProvider<Integer, DefaultEdge>() {

            @Override
            public DefaultEdge buildEdge(Integer from, Integer to, String label,
                    Map<String, Attribute> attributes) {
                Graph<Integer, DefaultEdge> tmpGraph =
                        new DirectedAcyclicGraph<Integer, DefaultEdge>(DefaultEdge.class);
                tmpGraph.addVertex(from);
                tmpGraph.addVertex(to);
                tmpGraph.addEdge(from, to);
                return tmpGraph.edgeSet().iterator().next();
            }
        };

        GraphImporter<Integer, DefaultEdge> importer =
                new JSONImporter<Integer, DefaultEdge>(vertexProvider, edgeProvider);

        Graph<Integer, DefaultEdge> g1 = new DirectedAcyclicGraph<Integer, DefaultEdge>(DefaultEdge.class);
        Reader reader = new StringReader(json);
        importer.importGraph(g1, reader);
        IOUtils.closeQuietly(reader);
        System.out.println(g1);
        // ([1, 2, 3, 4, 7], [(1,2), (1,3), (2,4), (3,4), (4,7)])

    }

 

 

分享到:
评论

相关推荐

    C++ JSON 序列化与反序列化

    C++的JSON序列化和反序列化是开发Web服务、网络通信或存储配置文件时必不可少的技术。选择合适的库并理解其工作原理,能帮助我们更高效地处理JSON数据。通过实践和学习,可以掌握更多高级技巧,如自定义序列化策略、...

    ASPNET中JSON的序列化和反序列化的方法

    在***中处理JSON的序列化和反序列化是Web开发中常见的需求。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,由于其简洁性和易于阅读性,被广泛用于服务器与客户端之间的数据传输。下面将详细介绍**...

    Json序列化和反序列化

    Json序列化和反序列化是数据交换的一种常见方式,尤其在Web开发中广泛使用。它允许我们将对象转换为JSON(JavaScript Object Notation)格式的字符串,以便在网络上传输,然后在接收端将这些字符串还原为原来的对象...

    VB.NET XML和JSON序列化与反序列化

    在VB.NET编程环境中,XML和JSON序列化与反序列化是常见的数据处理技术,用于将对象转换为文本格式(XML或JSON),以便于存储、传输和解析。这两者都是轻量级的数据交换格式,广泛应用于Web服务和客户端应用程序之间...

    Json序列化与反序列化

    总结来说,JSON序列化与反序列化是现代Web开发中不可或缺的一部分,它提供了数据交换的标准格式,使得不同语言和平台之间的数据交互变得简单高效。正确理解和使用这一技术,能够极大地提升开发效率和软件的可维护性...

    delphi_JSON序列化反序列化

    本篇将深入探讨Delphi中的JSON序列化和反序列化技术。 一、JSON简介 JSON是一种独立于语言的数据表示格式,它基于ECMAScript的一个子集。一个有效的JSON对象通常包含键值对(key-value pairs)的集合,数组或其他...

    Json序列化反序列化工具:JsonToolsJson序列化反序列化工具:JsonTools Json序列化反序列化工具:JsonTools

    JsonTools是一个不错的JSON序列化和反序列化功能包

    json数据序列化和反序列化

    在IT领域,JSON数据序列化和反序列化是数据处理的重要环节,尤其在Web开发中,它们在客户端与服务器之间传递数据时起到关键作用。 1. JSON数据格式:JSON数据由键值对组成,键用引号包围,然后冒号分隔,接着是值。...

    Java Json序列化与反序列化

    Java中的JSON(JavaScript Object Notation)序列化与反序列化是开发过程中常见且重要的操作,主要用于数据交换和存储。JSON是一种轻量级的数据交换格式,它允许我们将Java对象转换为JSON字符串,反之亦然,方便在...

    Json序列化与反序列化详解

    本文将深入探讨JSON的序列化与反序列化过程,以及如何使用Gson、FastJson和Jackson这三种流行的Java库来实现这一功能。 一、什么是JSON序列化与反序列化? 1. JSON序列化:序列化是指将Java对象转换为JSON字符串的...

    jackson json序列化,反序列化所需jar包

    Jackson是Java领域中广泛使用的JSON处理库,它提供了高效的JSON序列化和反序列化功能。在Java应用程序中,我们经常需要将Java对象转换为JSON字符串(序列化)或从JSON字符串恢复Java对象(反序列化),Jackson库就是...

    C# 后台序列化Json序列、反序列化Json序列(三种方法)

    在.NET开发中,C#语言提供了多种方式来处理JSON序列化和反序列化,这对于数据交换和存储至关重要。本文将详细介绍C#中处理JSON的三种主要方法:使用Json.NET库(Newtonsoft.Json)、使用.NET Framework自带的System....

    json序列化与反序列化处理代码(java版本)

    极好的序列化与发序列化代码。可以处理array集合,数组或者单个对象等的序列化与反序列化。

    Json序列化与反序列化方法封装类

    /// Json序列化与反序列化方法封装类 /// public static class JsonConvert { /// /// 序列化模型对象为Json /// /// 模型类型 /// 模型对象 /// &lt;returns&gt;&lt;/returns&gt; public static string GetJson(T...

    Json反序列化

    JSON(JavaScript Object ...了解和掌握JSON反序列化的原理、常见库以及注意事项,对于提升开发效率和保证代码质量具有积极意义。在实际工作中,应根据项目需求选择合适的反序列化库,并编写测试用例确保其正确性。

    c#json序列化与反序列化.doc

    本文将详细介绍 C# 中的 JSON 序列化和反序列化,包括使用 Newtonsoft.Json 库来实现 JSON 序列化和反序列化。 一、JSON 序列化 JSON 序列化是指将 .NET 对象转换为 JSON 字符串的过程。在 C# 中,我们可以使用 ...

    net Json 序列化和反序列化

    只要对json和序列化和反序列化总结,以及代码的案例:我们很多时候会涉及到几个序列化对象的使用:DataContractJsonSerializer,JavaScriptSerializer 和 Json.NET。

    详细案例介绍json序列化与反序列化

    /// JSON序列化和反序列化辅助类 /// public class JsonHelper { /// /// JSON序列化 /// public static string JsonSerializer(T t) { DataContractJsonSerializer ser = new DataContractJsonSerializer...

    Json.net在后台对Json序列化和反序列化

    Json.NET是.NET开发中广泛使用的第三方库,由James Newton-King 开发,它提供了一套高效且功能丰富的JSON序列化和反序列化的解决方案。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,常用于Web...

Global site tag (gtag.js) - Google Analytics