{"id":16935697,"url":"https://github.com/bvolpato/digesteroids","last_synced_at":"2025-04-11T18:54:00.135Z","repository":{"id":57744953,"uuid":"66678547","full_name":"bvolpato/digesteroids","owner":"bvolpato","description":"💊 Digester on Steroids for Java","archived":false,"fork":false,"pushed_at":"2017-11-20T20:40:57.000Z","size":56,"stargazers_count":9,"open_issues_count":0,"forks_count":2,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-25T14:51:17.431Z","etag":null,"topics":["digester","html","java","json","mapping","pojos","xml"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bvolpato.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-08-26T20:51:57.000Z","updated_at":"2023-04-12T07:24:20.000Z","dependencies_parsed_at":"2022-08-30T15:52:00.111Z","dependency_job_id":null,"html_url":"https://github.com/bvolpato/digesteroids","commit_stats":null,"previous_names":["brunocvcunha/digesteroids"],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bvolpato%2Fdigesteroids","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bvolpato%2Fdigesteroids/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bvolpato%2Fdigesteroids/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bvolpato%2Fdigesteroids/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bvolpato","download_url":"https://codeload.github.com/bvolpato/digesteroids/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248464656,"owners_count":21108238,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["digester","html","java","json","mapping","pojos","xml"],"created_at":"2024-10-13T20:55:08.876Z","updated_at":"2025-04-11T18:54:00.109Z","avatar_url":"https://github.com/bvolpato.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"digesteroids\n========\n\n[![Apache License](http://img.shields.io/badge/license-ASL-blue.svg)](https://github.com/brunocvcunha/digesteroids/blob/master/LICENSE)\n[![Build Status](https://travis-ci.org/brunocvcunha/digesteroids.svg)](https://travis-ci.org/brunocvcunha/digesteroids)\n[![Maven Central](https://maven-badges.herokuapp.com/maven-central/org.brunocvcunha.digesteroids/digesteroids/badge.svg)](https://maven-badges.herokuapp.com/maven-central/digesteroids/digesteroids)\n[![Coverage Status](https://coveralls.io/repos/github/brunocvcunha/digesteroids/badge.svg?branch=master)](https://coveralls.io/github/brunocvcunha/digesteroids?branch=master)\n\n:pill: Digester on Steroids.\n\nMap data to your POJOs in a beautiful way. Supports mapping from multiple sources:\n  1. HTML (scraping), using XPath, ID or CSS selector.\n  2. JSON Path\n  3. Maps\n  4. Property files\n\nDownload\n--------\n\nDownload [the latest JAR][1] or grab via Maven:\n```xml\n\u003cdependency\u003e\n  \u003cgroupId\u003eorg.brunocvcunha.digesteroids\u003c/groupId\u003e\n  \u003cartifactId\u003edigesteroids\u003c/artifactId\u003e\n  \u003cversion\u003e0.3\u003c/version\u003e\n\u003c/dependency\u003e\n```\nor Gradle:\n```groovy\ncompile 'org.brunocvcunha.digesteroids:digesteroids:0.3'\n```\n\nSnapshots of the development version are available in [Sonatype's `snapshots` repository][snap].\n\nDigesteroids requires at minimum Java 8.\n\n\n\n\n\nExamples\n--------\n\n\n### Convert a HTML into a POJO, based on the IDs, CSS Selector or XPath\n\nexample.html\n```html\n\u003chtml\u003e\n\t\u003chead\u003e\n\t   \u003ctitle\u003eDigesteroids Test\u003c/title\u003e\n\t\u003c/head\u003e\n\t\u003cbody\u003e\n        \u003cp id=\"fname\"\u003eBruno Candido Volpato da Cunha\u003c/p\u003e\n        \u003cp id=\"age\"\u003e24\u003c/p\u003e\n        \u003cp class=\"address1\"\u003e65535 University Ave\u003c/p\u003e\n        \u003cp\u003e\u003cspan\u003ePalo Alto\u003c/span\u003e\u003c/p\u003e\n\t\u003c/body\u003e\n\u003c/html\u003e\n```\n\nPersonPOJO.java\n```java\n@DigesterEntity\npublic class PersonPOJO {\n  \n  @DigesterMapping(source = \"htmlExample\", refType = ReferenceTypeEnum.HTML_ID, value = \"fname\")\n  private String name;\n  \n  @DigesterMapping(source = \"htmlExample\", refType = ReferenceTypeEnum.HTML_ID, value = \"age\")\n  private Integer age;\n  \n  @DigesterMapping(source = \"htmlExample\", refType = ReferenceTypeEnum.PASS_THROUGH, value = \"\")\n  private AddressPOJO address;\n  \n}\n\n@DigesterEntity\npublic class AddressPOJO {\n  @DigesterMapping(source = \"htmlExample\", refType = ReferenceTypeEnum.HTML_CSS, value = \"p.address1\")\n  private String address1;\n  \n  @DigesterMapping(source = \"htmlExample\", refType = ReferenceTypeEnum.HTML_XPATH, value = \"p \u003e span\")\n  private String city;\n  \n}\n```\n\n\nUsage\n```java\nDigesteroids digister = new Digesteroids();\n\nPersonPOJO person = digister.convertHTMLToType(\"htmlExample\", getClass().getResourceAsStream(\"/example.html\"), PersonPOJO.class);\n\nassertEquals(\"Bruno Candido Volpato da Cunha\", person.getName());\nassertEquals(\"65535 University Ave\", person.getAddress().getAddress1());\nassertEquals(\"Palo Alto\", person.getAddress().getCity());\n```\n\n\n\n\n### Convert a Map or Json into a POJO, converting the names:\n\nPOJOs:\n```java\n@DigesterEntity\npublic class PersonPOJO {\n  \n  // Field can have multiple @DigesterMapping\n  @DigesterMapping(source = \"htmlExample\", refType = ReferenceTypeEnum.HTML_ID, value = \"fname\")\n  @DigesterMapping(value = \"fullName\")\n  private String name;\n  \n  @DigesterMapping(source = \"htmlExample\", refType = ReferenceTypeEnum.HTML_ID, value = \"age\")\n  @DigesterMapping(value = \"age\")\n  private Integer age;\n  \n  @DigesterMapping(value = \"personAddress\")\n  private AddressPOJO address;\n  \n}\n\n@DigesterEntity\npublic class AddressPOJO {\n  @DigesterMapping(value = \"address\")\n  private String address1;\n  \n  @DigesterMapping(value = \"addressCity\")\n  private String city;\n  \n}\n```\n\n\nUsage (Map to POJO):\n```java\nDigesteroids digister = new Digesteroids();\n\nMap\u003cString, Object\u003e personMap = new LinkedHashMap\u003c\u003e();\npersonMap.put(\"fullName\", \"Bruno\");\npersonMap.put(\"age\", \"24\");\n\nMap\u003cString, Object\u003e addressMap = new LinkedHashMap\u003c\u003e();\naddressMap.put(\"address\", \"65535 University Ave\");\naddressMap.put(\"addressCity\", \"Palo Alto\");\n\npersonMap.put(\"personAddress\", addressMap);\n\nPersonPOJO person = digister.convertObjectToType(personMap, PersonPOJO.class);\n\nassertEquals(\"Bruno\", person.getName());\nassertEquals(\"65535 University Ave\", person.getAddress().getAddress1());\nassertEquals(\"Palo Alto\", person.getAddress().getCity());\n```\n\n\n\n [1]: https://search.maven.org/remote_content?g=org.brunocvcunha.digesteroids\u0026a=digesteroids\u0026v=LATEST\n [snap]: https://oss.sonatype.org/content/repositories/snapshots/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbvolpato%2Fdigesteroids","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbvolpato%2Fdigesteroids","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbvolpato%2Fdigesteroids/lists"}