{"id":13427856,"url":"https://github.com/mapstruct/mapstruct","last_synced_at":"2025-12-17T05:53:09.652Z","repository":{"id":3419324,"uuid":"4470435","full_name":"mapstruct/mapstruct","owner":"mapstruct","description":"An annotation processor for generating type-safe bean mappers","archived":false,"fork":false,"pushed_at":"2025-08-30T09:08:17.000Z","size":11146,"stargazers_count":7563,"open_issues_count":503,"forks_count":1009,"subscribers_count":133,"default_branch":"main","last_synced_at":"2025-12-08T16:20:02.440Z","etag":null,"topics":["annotation-processor","bean-mapping","java","javabeans","mapping","mapstruct","no-reflection","records"],"latest_commit_sha":null,"homepage":"https://mapstruct.org/","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mapstruct.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":"copyright.txt","agents":null,"dco":null,"cla":null},"funding":{"github":"mapstruct","open_collective":"mapstruct"}},"created_at":"2012-05-28T12:42:42.000Z","updated_at":"2025-12-06T16:16:18.000Z","dependencies_parsed_at":"2023-02-13T23:15:24.574Z","dependency_job_id":"b4b2a2e6-5c9b-4fa3-bf33-73fa391c3b6d","html_url":"https://github.com/mapstruct/mapstruct","commit_stats":{"total_commits":1728,"total_committers":147,"mean_commits":"11.755102040816327","dds":0.728587962962963,"last_synced_commit":"26c5bcd923c7206ad161e93237f841a79ca85efd"},"previous_names":[],"tags_count":48,"template":false,"template_full_name":null,"purl":"pkg:github/mapstruct/mapstruct","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mapstruct%2Fmapstruct","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mapstruct%2Fmapstruct/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mapstruct%2Fmapstruct/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mapstruct%2Fmapstruct/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mapstruct","download_url":"https://codeload.github.com/mapstruct/mapstruct/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mapstruct%2Fmapstruct/sbom","scorecard":{"id":616995,"data":{"date":"2025-08-11","repo":{"name":"github.com/mapstruct/mapstruct","commit":"29036542b85ff93a05fc5851793438ede8713f15"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":6,"checks":[{"name":"Code-Review","score":7,"reason":"Found 21/28 approved changesets -- score normalized to 7","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Maintained","score":10,"reason":"17 commit(s) and 14 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/java-ea.yml:1","Warn: no topLevel permission defined: .github/workflows/macos.yml:1","Warn: no topLevel permission defined: .github/workflows/main.yml:1","Warn: no topLevel permission defined: .github/workflows/release.yml:1","Warn: no topLevel permission defined: .github/workflows/windows.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/java-ea.yml:14: update your workflow using https://app.stepsecurity.io/secureworkflow/mapstruct/mapstruct/java-ea.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/java-ea.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/mapstruct/mapstruct/java-ea.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/macos.yml:13: update your workflow using https://app.stepsecurity.io/secureworkflow/mapstruct/mapstruct/macos.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/macos.yml:15: update your workflow using https://app.stepsecurity.io/secureworkflow/mapstruct/mapstruct/macos.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/main.yml:20: update your workflow using https://app.stepsecurity.io/secureworkflow/mapstruct/mapstruct/main.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/main.yml:22: update your workflow using https://app.stepsecurity.io/secureworkflow/mapstruct/mapstruct/main.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/main.yml:33: update your workflow using https://app.stepsecurity.io/secureworkflow/mapstruct/mapstruct/main.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/main.yml:46: update your workflow using https://app.stepsecurity.io/secureworkflow/mapstruct/mapstruct/main.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/main.yml:48: update your workflow using https://app.stepsecurity.io/secureworkflow/mapstruct/mapstruct/main.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/main.yml:55: update your workflow using https://app.stepsecurity.io/secureworkflow/mapstruct/mapstruct/main.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/mapstruct/mapstruct/release.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:23: update your workflow using https://app.stepsecurity.io/secureworkflow/mapstruct/mapstruct/release.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:68: update your workflow using https://app.stepsecurity.io/secureworkflow/mapstruct/mapstruct/release.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:95: update your workflow using https://app.stepsecurity.io/secureworkflow/mapstruct/mapstruct/release.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/windows.yml:13: update your workflow using https://app.stepsecurity.io/secureworkflow/mapstruct/mapstruct/windows.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/windows.yml:15: update your workflow using https://app.stepsecurity.io/secureworkflow/mapstruct/mapstruct/windows.yml/main?enable=pin","Info:   0 out of  14 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   2 third-party GitHubAction dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":9,"reason":"license file detected","details":["Info: project has a license file: LICENSE.txt:0","Warn: project license file does not contain an FSF or OSI license."],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Signed-Releases","score":8,"reason":"5 out of the last 5 releases have a total of 5 signed artifacts.","details":["Info: signed release artifact: mapstruct-1.6.3-dist.tar.gz.asc: https://github.com/mapstruct/mapstruct/releases/tag/1.6.3","Info: signed release artifact: mapstruct-1.6.2-dist.tar.gz.asc: https://github.com/mapstruct/mapstruct/releases/tag/1.6.2","Info: signed release artifact: mapstruct-1.6.1-dist.tar.gz.asc: https://github.com/mapstruct/mapstruct/releases/tag/1.6.1","Info: signed release artifact: mapstruct-1.6.0-dist.tar.gz.asc: https://github.com/mapstruct/mapstruct/releases/tag/1.6.0","Info: signed release artifact: mapstruct-1.6.0.RC1-dist.tar.gz.asc: https://github.com/mapstruct/mapstruct/releases/tag/1.6.0.RC1","Warn: release artifact 1.6.3 does not have provenance: https://api.github.com/repos/mapstruct/mapstruct/releases/184500583","Warn: release artifact 1.6.2 does not have provenance: https://api.github.com/repos/mapstruct/mapstruct/releases/175179067","Warn: release artifact 1.6.1 does not have provenance: https://api.github.com/repos/mapstruct/mapstruct/releases/175127033","Warn: release artifact 1.6.0 does not have provenance: https://api.github.com/repos/mapstruct/mapstruct/releases/169855587","Warn: release artifact 1.6.0.RC1 does not have provenance: https://api.github.com/repos/mapstruct/mapstruct/releases/166358346"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Packaging","score":10,"reason":"packaging workflow detected","details":["Info: Project packages its releases by way of GitHub Actions.: .github/workflows/main.yml:11"],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 26 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-21T04:15:25.032Z","repository_id":3419324,"created_at":"2025-08-21T04:15:25.032Z","updated_at":"2025-08-21T04:15:25.032Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":27706742,"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","status":"online","status_checked_at":"2025-12-13T02:00:09.769Z","response_time":147,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["annotation-processor","bean-mapping","java","javabeans","mapping","mapstruct","no-reflection","records"],"created_at":"2024-07-31T01:00:41.381Z","updated_at":"2025-12-17T05:53:09.646Z","avatar_url":"https://github.com/mapstruct.png","language":"Java","readme":"# MapStruct - Java bean mappings, the easy way!\n\n[![Latest Stable Version](https://img.shields.io/badge/Latest%20Stable%20Version-1.6.3-blue.svg)](https://central.sonatype.com/search?q=g:org.mapstruct%20v:1.6.3)\n[![Latest Version](https://img.shields.io/maven-central/v/org.mapstruct/mapstruct-processor.svg?maxAge=3600\u0026label=Latest%20Release)](https://central.sonatype.com/search?q=g:org.mapstruct)\n[![License](https://img.shields.io/badge/License-Apache%202.0-yellowgreen.svg)](https://github.com/mapstruct/mapstruct/blob/main/LICENSE.txt)\n\n[![Build Status](https://github.com/mapstruct/mapstruct/workflows/CI/badge.svg?branch=main)](https://github.com/mapstruct/mapstruct/actions?query=branch%3Amain+workflow%3ACI)\n[![Coverage Status](https://img.shields.io/codecov/c/github/mapstruct/mapstruct.svg)](https://codecov.io/gh/mapstruct/mapstruct/tree/main)\n\n* [What is MapStruct?](#what-is-mapstruct)\n* [Requirements](#requirements)\n* [Using MapStruct](#using-mapstruct)\n * [Maven](#maven)\n * [Gradle](#gradle)\n* [Documentation and getting help](#documentation-and-getting-help)\n* [Building from Source](#building-from-source)\n* [Links](#links)\n* [Licensing](#licensing)\n\n## What is MapStruct?\n\nMapStruct is a Java [annotation processor](https://docs.oracle.com/en/java/javase/21/docs/specs/man/javac.html#annotation-processing) designed to generate type-safe and high-performance mappers for Java bean classes, including support for Java 16+ records.\nBy automating the creation of mappings, MapStruct eliminates the need for tedious and error-prone manual coding. \nThe generator provides sensible defaults and built-in type conversions, allowing it to handle standard mappings effortlessly, while also offering flexibility for custom configurations or specialized mapping behaviors.\nWith seamless integration into modern Java projects, MapStruct can map between conventional beans, records, and even complex hierarchies, making it an adaptable tool for diverse Java applications.\n\nCompared to mapping frameworks working at runtime, MapStruct offers the following advantages:\n\n* **Fast execution** by using plain method invocations instead of reflection\n* **Compile-time type safety**. Only objects and attributes mapping to each other can be mapped, so there's no accidental mapping of an order entity into a customer DTO, etc.\n* **Self-contained code**—no runtime dependencies\n* **Clear error reports** at build time if:\n  * mappings are incomplete (not all target properties are mapped)\n  * mappings are incorrect (cannot find a proper mapping method or type conversion)\n* **Easily debuggable mapping code** (or editable by hand—e.g. in case of a bug in the generator)\n\nTo create a mapping between two types, declare a mapper interface like this:\n\n```java\n@Mapper\npublic interface CarMapper {\n\n    CarMapper INSTANCE = Mappers.getMapper( CarMapper.class );\n\n    @Mapping(target = \"seatCount\", source = \"numberOfSeats\")\n    CarDto carToCarDto(Car car);\n}\n```\n\nAt compile time MapStruct will generate an implementation of this interface. The generated implementation uses plain Java method invocations for mapping between source and target objects, i.e. no reflection is involved. By default, properties are mapped if they have the same name in source and target, but you can control this and many other aspects using `@Mapping` and a handful of other annotations.\n\n## Requirements\n\nMapStruct requires Java 1.8 or later.\n\n## Using MapStruct\n\nMapStruct works in command line builds (plain javac, via Maven, Gradle, Ant, etc.) and IDEs.\n\nFor Eclipse, a dedicated plug-in is in development (see https://github.com/mapstruct/mapstruct-eclipse). It goes beyond what's possible with an annotation processor, providing content assist for annotation attributes, quick fixes and more.\n\nFor IntelliJ the plug-in is available within the IntelliJ marketplace (see https://plugins.jetbrains.com/plugin/10036-mapstruct-support).\n\n### Maven\n\nFor Maven-based projects, add the following to your POM file in order to use MapStruct (the dependencies are available at Maven Central):\n\n```xml\n...\n\u003cproperties\u003e\n    \u003corg.mapstruct.version\u003e1.6.3\u003c/org.mapstruct.version\u003e\n\u003c/properties\u003e\n...\n\u003cdependencies\u003e\n    \u003cdependency\u003e\n        \u003cgroupId\u003eorg.mapstruct\u003c/groupId\u003e\n        \u003cartifactId\u003emapstruct\u003c/artifactId\u003e\n        \u003cversion\u003e${org.mapstruct.version}\u003c/version\u003e\n    \u003c/dependency\u003e\n\u003c/dependencies\u003e\n...\n\u003cbuild\u003e\n    \u003cplugins\u003e\n        \u003cplugin\u003e\n            \u003cgroupId\u003eorg.apache.maven.plugins\u003c/groupId\u003e\n            \u003cartifactId\u003emaven-compiler-plugin\u003c/artifactId\u003e\n            \u003cversion\u003e3.13.0\u003c/version\u003e\n            \u003cconfiguration\u003e\n                \u003csource\u003e17\u003c/source\u003e\n                \u003ctarget\u003e17\u003c/target\u003e\n                \u003cannotationProcessorPaths\u003e\n                    \u003cpath\u003e\n                        \u003cgroupId\u003eorg.mapstruct\u003c/groupId\u003e\n                        \u003cartifactId\u003emapstruct-processor\u003c/artifactId\u003e\n                        \u003cversion\u003e${org.mapstruct.version}\u003c/version\u003e\n                    \u003c/path\u003e\n                \u003c/annotationProcessorPaths\u003e\n            \u003c/configuration\u003e\n        \u003c/plugin\u003e\n    \u003c/plugins\u003e\n\u003c/build\u003e\n...\n```\n\n### Gradle\n\nFor Gradle, you need something along the following lines:\n\n```groovy\nplugins {\n    ...\n    id \"com.diffplug.eclipse.apt\" version \"3.26.0\" // Only for Eclipse\n}\n\ndependencies {\n    ...\n    implementation 'org.mapstruct:mapstruct:1.6.3'\n\n    annotationProcessor 'org.mapstruct:mapstruct-processor:1.6.3'\n    testAnnotationProcessor 'org.mapstruct:mapstruct-processor:1.6.3' // if you are using mapstruct in test code\n}\n...\n```\n\nIf you don't work with a dependency management tool, you can obtain a distribution bundle from [Releases page](https://github.com/mapstruct/mapstruct/releases).\n\n## Documentation and getting help\n\nTo learn more about MapStruct, refer to the [project homepage](https://mapstruct.org). The [reference documentation](https://mapstruct.org/documentation/reference-guide/) covers all provided functionality in detail. If you need help please ask it in the [Discussions](https://github.com/mapstruct/mapstruct/discussions).\n\n## Building from Source\n\nMapStruct uses Maven for its build. Java 21 is required for building MapStruct from source.\nTo build the complete project, run\n\n    ./mvnw clean install\n\nfrom the root of the project directory. To skip the distribution module, run \n\n    ./mvnw clean install -DskipDistribution=true\n    \n## Importing into IDE\n\nMapStruct uses the gem annotation processor to generate mapping gems for its own annotations.\nTherefore, for seamless integration within an IDE annotation processing needs to be enabled.\n\n### IntelliJ \n\nMake sure that you have at least IntelliJ 2018.2.x (needed since support for `annotationProcessors` from the `maven-compiler-plugin` is from that version).\nEnable annotation processing in IntelliJ (Build, Execution, Deployment -\u003e Compiler -\u003e Annotation Processors)\n\n### Eclipse\n\nMake sure that you have the [m2e_apt](https://marketplace.eclipse.org/content/m2e-apt) plugin installed.\n\n## Links\n\n* [Homepage](https://mapstruct.org)\n* [Source code](https://github.com/mapstruct/mapstruct/)\n* [Downloads](https://github.com/mapstruct/mapstruct/releases)\n* [Issue tracker](https://github.com/mapstruct/mapstruct/issues)\n* [User group](https://groups.google.com/forum/?hl=en#!forum/mapstruct-users)\n* [CI build](https://github.com/mapstruct/mapstruct/actions/)\n\n## Licensing\n\nMapStruct is licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this project except in compliance with the License. You may obtain a copy of the License at https://www.apache.org/licenses/LICENSE-2.0.\n","funding_links":["https://github.com/sponsors/mapstruct","https://opencollective.com/mapstruct"],"categories":["Java beans mappings","Java","Projects","Solutions","项目","二、核心功能库（解决具体开发问题）","I. Development","Bean映射\u0026复制","Bean Mapping"],"sub_categories":["Why Kafka?","Bean Mapping","Bean映射","1. 对象映射（Bean转换）","6. Useful libraries"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmapstruct%2Fmapstruct","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmapstruct%2Fmapstruct","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmapstruct%2Fmapstruct/lists"}