Compare commits

..

3 commits

14 changed files with 118 additions and 2135 deletions

2
.gitignore vendored
View file

@ -11,8 +11,6 @@
*.userosscache
*.sln.docstates
*.db
# User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs

View file

@ -23,7 +23,11 @@ namespace BuecherwurmAPI.Controllers
public ActionResult<IEnumerable<Item>> GetAllItems()
{
var items = _repository.GetAllItems();
return Ok(items);
if (items != null)
{
return Ok(items);
}
return NoContent();
}
// POST api/inventar

View file

@ -18,33 +18,40 @@ namespace BuecherwurmAPI.Controllers
}
// GET Katalog
[HttpGet]
public ActionResult<IEnumerable<IProduct>> GetAllProducts()
public ActionResult<IEnumerable<Book>> GetAllBooks()
{
var Products =_repository.GetAllProducts();
return Ok(Products);
var books =_repository.GetAllBooks();
return Ok(books);
}
// POST katalog/buch
[HttpPost("buch")]
public ActionResult<Book> AddProduct(BookPost book)
// POST Katalog
[HttpPost]
public ActionResult<Book> AddBook(BookPost book)
{
var id = _repository.AddProduct(book);
return Ok(_repository.GetProductById(id));
var id = _repository.AddBook(book);
return Ok(new Book
{
Name = book.Name,
Author= book.Author,
Country= book.Country,
Link= book.Link,
Language= book.Language,
Pages= book.Pages,
Year=book.Year,
ProductId = id,
Category= book.Category,
ImageLink =book.ImageLink,
LendTime =book.LendTime,
LendType = book.LendType
});
}
// POST katalog/magazin
[HttpPost("magazin")]
public ActionResult<Magazin> AddProduct(MagazinPost book)
{
var id = _repository.AddProduct(book);
return Ok(_repository.GetProductById(id));
}
// GET katalog/{id}
[HttpGet("{id}")]
public ActionResult <IProduct> GetProductByID(long id)
public ActionResult <Book> GetBookByID(long id)
{
var book = _repository.GetProductById(id);
var book = _repository.GetBookById(id);
if (book != null)
{
return Ok(book);
@ -55,22 +62,22 @@ namespace BuecherwurmAPI.Controllers
// PUT Katalog/{id}
[HttpPut("{id}")]
public ActionResult<IProduct> EditProduct(long id, IProduct book)
public ActionResult<Book> EditBook(long id, Book book)
{
_repository.EditProduct(id, book);
_repository.EditBook(id, book);
return Ok(book);
}
// DELETE katalog/{id}
[HttpDelete("{id}")]
public ActionResult<IProduct> DeleteProduct (long id)
public ActionResult<Book> DeleteBook (long id)
{
var book = _repository.GetProductById(id);
var book = _repository.GetBookById(id);
if(book == null)
{
return NotFound();
}
_repository.DeleteProduct(id);
_repository.DeleteBook(id);
return NoContent();
}

View file

@ -35,7 +35,7 @@ namespace BuecherwurmAPI.Controllers
[HttpPost]
public ActionResult<LendPost> LendsPost(LendPost lend)
{
var newId = _repository.AddLend(lend);
var newId = _repository.insertLendReturningId(lend);
if (newId > 0)
{
var item = new Lend
@ -68,12 +68,11 @@ namespace BuecherwurmAPI.Controllers
return Ok(lend);
}
//PUT api/leihvorgang/{id}
[HttpPut("{id}")]
public ActionResult LendPatchById(long id, LendPost lend)
//PATCH api/leihvorgang/{id}
[HttpPatch("{id}")]
public ActionResult LendPatchById(int id, JsonPatchDocument<Lend> patchDocument)
{
var lendPatch = _repository.insertLendReturningId(id, lend);
return Ok(lendPatch);
return Ok();
}
}
}

BIN
LongWormMemory.db Normal file

Binary file not shown.

View file

@ -2,43 +2,36 @@ using System.ComponentModel.DataAnnotations;
namespace BuecherwurmAPI.Models
{
public class Book : IProduct
public class Book
{
public string Name {get; set;}
public string Author {get; set;}
public string Country {get; set;}
public string Link {get; set;}
public string Language {get; set;}
public long Pages {get; set;}
public long Year {get; set;}
[Key, Required]
public long ProductId { get; set; }
public string Title {get; set;}
public string Author {get; set;}
public string Country {get; set;}
public string Link {get; set;}
public string Language {get; set;}
public long Pages {get; set;}
public long Year {get; set;}
public CategoryEnum Category { get; set; }
public long Category { get; set; }
public string ImageLink { get; set; }
public long LendTime {get; set;}
public LendTypeEnum LendType {get; set;}
public long LendType {get; set;}
}
public class BookPost : IProductPost
public class BookPost
{
public string Title {get; set;}
public string Name {get; set;}
public string Author {get; set;}
public string Country {get; set;}
public string Link {get; set;}
public string Language {get; set;}
public long Pages {get; set;}
public long Year {get; set;}
public CategoryEnum Category { get; set; }
public long Category { get; set; }
public string ImageLink { get; set; }
public long LendTime {get; set;}
public LendTypeEnum LendType {get; set;}
public BookPost()
{
LendType = LendTypeEnum.Physical;
LendTime = 30;
Category = CategoryEnum.Book;
}
public long LendType {get; set;}
}
}

View file

@ -1,26 +0,0 @@
namespace BuecherwurmAPI.Models
{
public interface IProductPost
{
CategoryEnum Category {get; set;}
long LendTime {get; set;}
string Title {get; set;}
LendTypeEnum LendType {get; set;}
}
public interface IProduct
{
long ProductId {get; set;}
CategoryEnum Category {get; set;}
long LendTime {get; set;}
string Title {get; set;}
LendTypeEnum LendType {get; set;}
}
}

View file

@ -21,147 +21,92 @@ namespace BuecherwurmAPI.Models
_dbConnection.Open();
}
public IEnumerable<IProduct> GetAllProducts()
public IEnumerable<Book> GetAllBooks()
{
var books= new List<IProduct>();
var books= new List<Book>();
using (var command = _dbConnection.CreateCommand())
{
command.CommandText = @"SELECT * FROM Products";
command.CommandText = @"SELECT * FROM Books";
var dataReader = command.ExecuteReader();
while (dataReader.Read())
{
if (!dataReader["Author"].Equals(null))
{
books.Add(new Book
{
books.Add(new Book
{
Title = (string) dataReader["Title"],
Author = (string) dataReader["Author"],
Country = (string) dataReader["Country"],
Link = (string) dataReader["Link"],
Language = (string) dataReader["Language"],
Pages = (long) dataReader["Pages"],
Year = (long) dataReader["Year"],
ProductId = (long) dataReader["ProductId"],
Category = (CategoryEnum) Enum.Parse(typeof(CategoryEnum), dataReader["Category"].ToString()),
ImageLink = (string) dataReader["ImageLink"],
LendTime = (long) dataReader["LendTime"],
LendType = (LendTypeEnum) Enum.Parse(typeof(LendTypeEnum), dataReader["LendType"].ToString())
});
}
else
{
books.Add(new Magazin
{
Title = (string) dataReader["Title"],
LendTime = (long) dataReader["LendTime"],
LendType = (LendTypeEnum) Enum.Parse(typeof(LendTypeEnum), dataReader["LendType"].ToString()),
Category = (CategoryEnum) Enum.Parse(typeof(CategoryEnum), dataReader["Category"].ToString()),
Run = (long) dataReader["Run"],
Audience = (string) dataReader["Audience"],
Topic = (string) dataReader["Topic"]
});
}
Name = (string) dataReader["Name"],
Author = (string) dataReader["Author"],
Country = (string) dataReader["Country"],
Link = (string) dataReader["Link"],
Language = (string) dataReader["Language"],
Pages = (long) dataReader["Pages"],
Year = (long) dataReader["Year"],
ProductId = (long) dataReader["ProductId"],
Category = (long) dataReader["Category"],
ImageLink = (string) dataReader["ImageLink"],
LendTime = (long) dataReader["LendTime"],
LendType = (long) dataReader["LendType"]
});
}
}
return books;
}
public IProduct GetProductById(long id)
public Book GetBookById(long id)
{
using (var command = _dbConnection.CreateCommand())
{
command.CommandText = "SELECT * FROM \"Products\" WHERE ProductId = @id";
command.Parameters.Add(new SqliteParameter("@id", id));
command.Parameters.Add(new SqliteParameter("@id", SqliteType.Integer)).Value = id;
command.CommandText = @"SELECT * FROM Books WHERE ProductId = @id";
var dataReader = command.ExecuteReader();
IProduct book;
dataReader.Read();
if (dataReader["Author"].Equals(null))
{
book = new Magazin
var book = new Book
{
Title = (string)dataReader["Title"],
LendTime = (long)dataReader["LendTime"],
LendType = (LendTypeEnum) Enum.Parse(typeof(LendTypeEnum), dataReader["LendType"].ToString()),
Category = (CategoryEnum) Enum.Parse(typeof(CategoryEnum), dataReader["Category"].ToString()),
Run = (long)dataReader["Run"],
Audience = (string)dataReader["Audience"],
Topic = (string)dataReader["Topic"]
};
}
else
{
book = new Book
{
Title = (string)dataReader["Title"],
Author = (string)dataReader["Author"],
Country = (string)dataReader["Country"],
Link = (string)dataReader["Link"],
Language = (string)dataReader["Language"],
Pages = (long)dataReader["Pages"],
Year = (long)dataReader["Year"],
ProductId = (long)dataReader["ProductId"],
Category = (CategoryEnum) Enum.Parse(typeof(CategoryEnum), dataReader["Category"].ToString()),
Name = (string) dataReader["Books"],
Author = (string) dataReader["Author"],
Country = (string) dataReader["Country"],
Link = (string) dataReader["Link"],
Language = (string) dataReader["Language"],
Pages = (long) dataReader["Pages"],
Year = (long) dataReader["Year"],
ProductId = (long) dataReader["ProductId"],
Category = (long) dataReader["Category"],
ImageLink = (string) dataReader["ImageLink"],
LendTime = (long) dataReader["LendTime"],
LendType = (LendTypeEnum) Enum.Parse(typeof(LendTypeEnum), dataReader["LendType"].ToString())
LendType = (long) dataReader["LendType"]
};
}
return book;
return book;
}
}
public void DeleteProduct(long id)
public void DeleteBook(long id)
{
using (var command = _dbConnection.CreateCommand())
{
command.Parameters.Add(new SqliteParameter("@id", id));
command.CommandText = @"DELETE FROM Products WHERE ProductId= @id";
command.Parameters.Add(new SqliteParameter("@id", SqliteType.Integer)).Value = id;
command.CommandText = @"DELETE * FROM Books WHERE ProductId= @id";
var dataReader = command.ExecuteReader();
}
}
public long AddProduct (IProductPost book)
public long AddBook (BookPost book)
{
using (var command = _dbConnection.CreateCommand())
{
command.CommandText = @"INSERT INTO Products (ProductId, Title, Author, Country, Link, Language, Pages, Year, Category, ImageLink, LendTime, LendType, Run, Audience, Topic) VALUES (NULL, @Title, @Author, @Country, @Link, @Language, @Pages, @Year, @Category, @ImageLink, @LendTime, @LendType, @Run, @Audience, @Topic)";
// funktioniert das so?
//muss ProduktId übergeben werden?
command.CommandText = @"INSERT INTO Books (Name, Author, Country, Link, Language, Pages, Year, ProductId, Category, ImageLink, LendTime, LendType) VALUES (@Name, @Author, @Country, @Link, @Language, @Pages, @Year, NULL, @Category, @ImageLink, @LendTime, @LendType )";
command.Parameters.Add(new SqliteParameter("@Title", book.Title));
command.Parameters.Add(new SqliteParameter("@Name", book.Name));
command.Parameters.Add(new SqliteParameter("@Author", book.Author));
command.Parameters.Add(new SqliteParameter("@Country", book.Country));
command.Parameters.Add(new SqliteParameter("@Link", book.Link));
command.Parameters.Add(new SqliteParameter("@Language", book.Language));
command.Parameters.Add(new SqliteParameter("@Pages", book.Pages));
command.Parameters.Add(new SqliteParameter("@Year", book.Year));
command.Parameters.Add(new SqliteParameter("@Category", book.Category));
command.Parameters.Add(new SqliteParameter("@ImageLink", book.ImageLink));
command.Parameters.Add(new SqliteParameter("@LendTime", book.LendTime));
command.Parameters.Add(new SqliteParameter("@LendType", book.LendType));
if (book.GetType() == typeof(BookPost))
{
command.Parameters.Add(new SqliteParameter("@Author", ((BookPost)book).Author));
command.Parameters.Add(new SqliteParameter("@Country", ((BookPost)book).Country));
command.Parameters.Add(new SqliteParameter("@Link", ((BookPost)book).Link));
command.Parameters.Add(new SqliteParameter("@Language", ((BookPost)book).Language));
command.Parameters.Add(new SqliteParameter("@Pages", ((BookPost)book).Pages));
command.Parameters.Add(new SqliteParameter("@Year", ((BookPost)book).Year));
command.Parameters.Add(new SqliteParameter("@ImageLink", ((BookPost)book).ImageLink));
command.Parameters.Add(new SqliteParameter("@Run", DBNull.Value));
command.Parameters.Add(new SqliteParameter("@Audience", DBNull.Value));
command.Parameters.Add(new SqliteParameter("@Topic", DBNull.Value));
}
else
{
command.Parameters.Add(new SqliteParameter("@Author", DBNull.Value));
command.Parameters.Add(new SqliteParameter("@Country", DBNull.Value));
command.Parameters.Add(new SqliteParameter("@Link", DBNull.Value));
command.Parameters.Add(new SqliteParameter("@Language", DBNull.Value));
command.Parameters.Add(new SqliteParameter("@Pages", DBNull.Value));
command.Parameters.Add(new SqliteParameter("@Year", DBNull.Value));
command.Parameters.Add(new SqliteParameter("@ImageLink", DBNull.Value));
command.Parameters.Add(new SqliteParameter("@Run", ((MagazinPost)book).Run));
command.Parameters.Add(new SqliteParameter("@Audience", ((MagazinPost)book).Audience));
command.Parameters.Add(new SqliteParameter("@Topic", ((MagazinPost)book).Topic));
}
var success = command.ExecuteNonQuery();
@ -175,46 +120,27 @@ namespace BuecherwurmAPI.Models
}
}
public long EditProduct (long id, IProduct book)
public long EditBook (long id, Book book)
{
using (var command = _dbConnection.CreateCommand())
{
// funktioniert das so?
command.Parameters.Add(new SqliteParameter("@id", id));
command.CommandText = @"UPDATE Products SET (Title, Author, Country, Link, Language, Pages, Year, Category, ImageLink, LendTime, LendType, Run, Audience, Topic) = (@Title, @Author, @Country, @Link, @Language, @Pages, @Year, @Category, @ImageLink, @LendTime, @LendType, @Run, @Audience, @Topic) WHERE ProductId = @id";
command.CommandText = @"UPDATE Books SET (Name, Author, Country, Link, Language, Pages, Year, Category, ImageLink, LendTime, LendType) = (@Name, @Author, @Country, @Link, @Language, @Pages, @Year, @Category, @ImageLink, @LendTime, @LendType ) WHERE ProductId = @id";
command.Parameters.Add(new SqliteParameter("@Title", book.Title));
command.Parameters.Add(new SqliteParameter("@Name", book.Name));
command.Parameters.Add(new SqliteParameter("@Author", book.Author));
command.Parameters.Add(new SqliteParameter("@Country", book.Country));
command.Parameters.Add(new SqliteParameter("@Link", book.Link));
command.Parameters.Add(new SqliteParameter("@Language", book.Language));
command.Parameters.Add(new SqliteParameter("@Pages", book.Pages));
command.Parameters.Add(new SqliteParameter("@Year", book.Year));
command.Parameters.Add(new SqliteParameter("@Category", book.Category));
command.Parameters.Add(new SqliteParameter("@ImageLink", book.ImageLink));
command.Parameters.Add(new SqliteParameter("@LendTime", book.LendTime));
command.Parameters.Add(new SqliteParameter("@LendType", book.LendType));
if (book.GetType() == typeof(Book))
{
command.Parameters.Add(new SqliteParameter("@Author", ((BookPost)book).Author));
command.Parameters.Add(new SqliteParameter("@Country", ((BookPost)book).Country));
command.Parameters.Add(new SqliteParameter("@Link", ((BookPost)book).Link));
command.Parameters.Add(new SqliteParameter("@Language", ((BookPost)book).Language));
command.Parameters.Add(new SqliteParameter("@Pages", ((BookPost)book).Pages));
command.Parameters.Add(new SqliteParameter("@Year", ((BookPost)book).Year));
command.Parameters.Add(new SqliteParameter("@ImageLink", ((BookPost)book).ImageLink));
command.Parameters.Add(new SqliteParameter("@Run", DBNull.Value));
command.Parameters.Add(new SqliteParameter("@Audience", DBNull.Value));
command.Parameters.Add(new SqliteParameter("@Topic", DBNull.Value));
}
else
{
command.Parameters.Add(new SqliteParameter("@Author", DBNull.Value));
command.Parameters.Add(new SqliteParameter("@Country", DBNull.Value));
command.Parameters.Add(new SqliteParameter("@Link", DBNull.Value));
command.Parameters.Add(new SqliteParameter("@Language", DBNull.Value));
command.Parameters.Add(new SqliteParameter("@Pages", DBNull.Value));
command.Parameters.Add(new SqliteParameter("@Year", DBNull.Value));
command.Parameters.Add(new SqliteParameter("@ImageLink", DBNull.Value));
command.Parameters.Add(new SqliteParameter("@Run", ((MagazinPost)book).Run));
command.Parameters.Add(new SqliteParameter("@Audience", ((MagazinPost)book).Audience));
command.Parameters.Add(new SqliteParameter("@Topic", ((MagazinPost)book).Topic));
}
command.ExecuteNonQuery();
var success = command.ExecuteNonQuery();
return id;
}

View file

@ -24,7 +24,5 @@ namespace BuecherwurmAPI.Models
public DateTime ReturnDate {get; set;}
public string Customer {get; set;}
public bool Returned { get; set; }
}
}

View file

@ -101,43 +101,14 @@ namespace BuecherwurmAPI.Models
return null;
}
public long insertLendReturningId(long id, LendPost lend)
public long insertLendReturningId(LendPost lend)
{
using (var command = _dbConnection.CreateCommand())
{
command.CommandText = "UPDATE Lends SET (ItemId, ReturnDate, Customer, Returned) = (@itemId, @returnDate, @customer, @returned) WHERE Id = @id";
command.Parameters.Add(new SqliteParameter("@id", id));
command.CommandText = "INSERT INTO Lends VALUES (NULL, @itemId, @returnDate, @customer, false)";
command.Parameters.Add(new SqliteParameter("@itemId", lend.ItemId));
command.Parameters.Add(new SqliteParameter("@returnDate", lend.ReturnDate));
command.Parameters.Add(new SqliteParameter("@customer", lend.Customer));
command.Parameters.Add(new SqliteParameter("@returned", lend.Returned));
var success = command.ExecuteNonQuery();
if (success == 1)
{
command.CommandText = @"SELECT last_insert_rowid()";
return (long)command.ExecuteScalar();
}
return -1;
}
}
public long AddLend (LendPost lend)
{
using (var command = _dbConnection.CreateCommand())
{
// funktioniert das so?
//muss ProduktId übergeben werden?
command.CommandText = @"INSERT INTO Lends (itemid, ReturnDate, Customer, Returned) VALUES (@ItemId, @ReturnDate, @Customer, false)";
command.Parameters.Add(new SqliteParameter("@ItemId", lend.ItemId));
command.Parameters.Add(new SqliteParameter("@ReturnDate", lend.ReturnDate));
command.Parameters.Add(new SqliteParameter("@Customer", lend.Customer));
var success = command.ExecuteNonQuery();

View file

@ -1,35 +1,15 @@
using System.ComponentModel.DataAnnotations;
namespace BuecherwurmAPI.Models
{
public class Magazin : IProduct
public class Magazin
{
public long ProductId {get; set;}
public int ProductId {get; set;}
public CategoryEnum Category {get; set;}
public long LendTime {get; set;}
public string Title {get; set;}
public long Run {get; set;}
public string Audience {get; set;}
public string Topic {get; set;}
public LendTypeEnum LendType {get; set;}
}
public class MagazinPost : IProductPost
{
public CategoryEnum Category {get; set;}
public long LendTime {get; set;}
public string Title {get; set;}
public int LendTime {get; set;}
public string Name {get; set;}
public string Run {get; set;}
public string Audience {get; set;}
public string Topic {get; set;}
public LendTypeEnum LendType {get; set;}
public MagazinPost()
{
LendType = LendTypeEnum.Physical;
LendTime = 2;
Category = CategoryEnum.Magazine;
}
}
}

View file

@ -1,15 +1,11 @@
using System;
using System.IO;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.Data.Sqlite;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using System.Text.Json;
using System.Text.Json.Serialization;
namespace BuecherwurmAPI
{
@ -17,68 +13,9 @@ namespace BuecherwurmAPI
{
public static void Main(string[] args)
{
if (!File.Exists("LongWormMemory.db"))
{
CreateNewEmptyDB();
MakeImports();
}
CreateHostBuilder(args).Build().Run();
}
private static void MakeImports()
{
var booksJson = File.ReadAllText("books.json");
//var magazinesJson = File.ReadAllText("magazines.json");
var catalogue = new Models.KatalogModel();
var items = new Models.ItemModel();
var config = new JsonSerializerOptions
{
PropertyNameCaseInsensitive = true
};
var importedBooks = JsonSerializer.Deserialize<List<Models.BookPost>>(booksJson, config);
//var importedMags = JsonSerializer.Deserialize<List<Models.BookPost>>(magazinesJson);
List<Models.IProductPost> imports = new List<Models.IProductPost>();
imports.AddRange(importedBooks);
foreach (var item in importedBooks)
{
item.LendType = LendTypeEnum.Virtual;
item.Category = Models.CategoryEnum.EBook;
imports.Add(item);
}
//imports.AddRange(importedMags);
foreach (var item in imports)
{
var id = catalogue.AddProduct(item);
items.NewItem(new Models.ItemPost{ BookId = (int)id});
if (item.LendType != LendTypeEnum.Virtual)
{
items.NewItem(new Models.ItemPost{ BookId = (int)id});
}
}
}
private static void CreateNewEmptyDB()
{
//File.Create("LongWormMemory.db");
File.WriteAllText("LongWormMemory.db", "");
var connectionBuilder = new SqliteConnectionStringBuilder {DataSource = "LongWormMemory.db"};
var connection = new SqliteConnection(connectionBuilder.ConnectionString);
connection.Open();
using (var command = connection.CreateCommand())
{
command.CommandText = "CREATE TABLE Lends (Id INTEGER NOT NULL PRIMARY KEY, ItemId INTEGER NOT NULL, ReturnDate TEXT NOT NULL, Customer TEXT NOT NULL, Returned INTEGER NOT NULL)";
command.ExecuteNonQuery();
command.CommandText = "CREATE TABLE Items (ItemId INTEGER NOT NULL PRIMARY KEY, BookId INTEGER NOT NULL)";
command.ExecuteNonQuery();
command.CommandText = "CREATE TABLE Products (ProductId INTEGER PRIMARY KEY, Title TEXT, Author TEXT, Country TEXT, Link TEXT, Language TEXT, Pages INTEGER, Year INTEGER, Category INTEGER, ImageLink TEXT, LendTime INTEGER, LendType INTEGER, Run INTEGER, Audience TEXT, Topic TEXT)";
command.ExecuteNonQuery();
}
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>

1002
books.json

File diff suppressed because it is too large Load diff

View file

@ -1,802 +0,0 @@
[
{
"Rang": 1,
"Titel": "ADAC Motorwelt",
"Auflage": "13.705.032",
"Gruppe": "Publikum",
"Sachgruppe": "Motorpresse",
"Verlag / Herausgeber": "ADAC"
},
{
"Rang": 2,
"Titel": "Apotheken-Umschau",
"Auflage": "9.616.642",
"Gruppe": "Kunden",
"Sachgruppe": "Apotheken/Medizin/Gesundheit",
"Verlag / Herausgeber": "Wort & Bild Verlag"
},
{
"Rang": 3,
"Titel": "Bleibgesund",
"Auflage": "6.423.491",
"Gruppe": "Kunden",
"Sachgruppe": "Medizin/Gesundheit",
"Verlag / Herausgeber": "wdv-Gruppe"
},
{
"Rang": 4,
"Titel": "bleibgesund 60",
"Auflage": "3.192.922",
"Gruppe": "Kunden",
"Sachgruppe": "Medizin/Gesundheit",
"Verlag / Herausgeber": "wdv-Gruppe"
},
{
"Rang": 5,
"Titel": "tv14",
"Auflage": "2.389.661",
"Gruppe": "Publikum",
"Sachgruppe": "Programmzeitschriften",
"Verlag / Herausgeber": "Bauer Media Group"
},
{
"Rang": 6,
"Titel": "metallzeitung",
"Auflage": "2.227.205",
"Gruppe": "Publikum",
"Sachgruppe": "Aktuelle Zeitschriften und Magazine",
"Verlag / Herausgeber": "IG Metall"
},
{
"Rang": 7,
"Titel": "ver.di PUBLIK",
"Auflage": "1.899.122",
"Gruppe": "Publikum",
"Sachgruppe": "Sonstige Zeitschriften National",
"Verlag / Herausgeber": "ver.di"
},
{
"Rang": 8,
"Titel": "TV Digital",
"Auflage": "1.771.022",
"Gruppe": "Publikum",
"Sachgruppe": "Programmzeitschriften",
"Verlag / Herausgeber": "Funke Mediengruppe"
},
{
"Rang": 9,
"Titel": "Ratgeber/Meine Apotheke",
"Auflage": "1.728.602",
"Gruppe": "Kunden",
"Sachgruppe": "Apotheken/Medizin/Gesundheit",
"Verlag / Herausgeber": "Gebr. Storck GmbH & Co. Verlags-oHG"
},
{
"Rang": 10,
"Titel": "Senioren Ratgeber",
"Auflage": "1.727.317",
"Gruppe": "Kunden",
"Sachgruppe": "Apotheken/Medizin/Gesundheit",
"Verlag / Herausgeber": "Wort & Bild Verlag"
},
{
"Rang": 11,
"Titel": "Mit Liebe - Das Genussmagazin",
"Auflage": "1.668.550",
"Gruppe": "Kunden",
"Sachgruppe": "Lebensmittel/Kochen/Haushalt",
"Verlag / Herausgeber": "EDEKA Verlagsgesellschaft mbH"
},
{
"Rang": 12,
"Titel": "Das Haus",
"Auflage": "1.598.049",
"Gruppe": "Publikum",
"Sachgruppe": "Wohn- und Gartenzeitschriften",
"Verlag / Herausgeber": "Hubert Burda Media"
},
{
"Rang": 13,
"Titel": "Mein Eigenheim, Wohnen & Leben",
"Auflage": "1.586.533",
"Gruppe": "Publikum",
"Sachgruppe": "Wohn- und Gartenzeitschriften",
"Verlag / Herausgeber": "J.Fink Verlag GmbH & Co. KG"
},
{
"Rang": 14,
"Titel": "VdK-Zeitung",
"Auflage": "1.559.980",
"Gruppe": "Publikum",
"Sachgruppe": "Aktuelle Zeitschriften und Magazine",
"Verlag / Herausgeber": "Sozialverband VdK Deutschland"
},
{
"Rang": 15,
"Titel": "medizini",
"Auflage": "1.491.475",
"Gruppe": "Kunden",
"Sachgruppe": "Apotheken/Medizin/Gesundheit",
"Verlag / Herausgeber": "Wort & Bild Verlag"
},
{
"Rang": 16,
"Titel": "Wohnglück",
"Auflage": "1.404.263",
"Gruppe": "Publikum",
"Sachgruppe": "Wohn- und Gartenzeitschriften",
"Verlag / Herausgeber": "BELLEVUE AND MORE GmbH"
},
{
"Rang": 17,
"Titel": "Diabetes Ratgeber",
"Auflage": "1.200.450",
"Gruppe": "Kunden",
"Sachgruppe": "Apotheken/Medizin/Gesundheit",
"Verlag / Herausgeber": "Wort & Bild Verlag"
},
{
"Rang": 18,
"Titel": "TV Direkt",
"Auflage": "1.185.933",
"Gruppe": "Publikum",
"Sachgruppe": "Programmzeitschriften",
"Verlag / Herausgeber": "Funke Mediengruppe"
},
{
"Rang": 19,
"Titel": "TV-Movie",
"Auflage": "1.166.838",
"Gruppe": "Publikum",
"Sachgruppe": "Programmzeitschriften",
"Verlag / Herausgeber": "Bauer Media Group"
},
{
"Rang": 20,
"Titel": "Hörzu",
"Auflage": "1.125.985",
"Gruppe": "Publikum",
"Sachgruppe": "Programmzeitschriften",
"Verlag / Herausgeber": "Funke Mediengruppe"
},
{
"Rang": 21,
"Titel": "vigo Gesundheit - Das Kundenmagazin",
"Auflage": "1.121.050",
"Gruppe": "Kunden",
"Sachgruppe": "Medizin/Gesundheit",
"Verlag / Herausgeber": "wdv-Gruppe"
},
{
"Rang": 22,
"Titel": "Johanniter",
"Auflage": "1.106.507",
"Gruppe": "Publikum",
"Sachgruppe": "Gesundheitsmagazine",
"Verlag / Herausgeber": "Die Johanniter"
},
{
"Rang": 23,
"Titel": "ASB Magazin",
"Auflage": "1.104.904",
"Gruppe": "Publikum",
"Sachgruppe": "Gesundheitsmagazine",
"Verlag / Herausgeber": "Arbeiter-Samariter-Bund Deutschland"
},
{
"Rang": 24,
"Titel": "Wohnen - Das Magazin für Bauen, Einrichten & Lebensart",
"Auflage": "1.056.140",
"Gruppe": "Publikum",
"Sachgruppe": "Wohn- und Gartenzeitschriften",
"Verlag / Herausgeber": "HMC Verlag Hamburg Media Company GmbH"
},
{
"Rang": 25,
"Titel": "Landlust Die schönsten Seiten des Landlebens",
"Auflage": "1.040.119",
"Gruppe": "Publikum",
"Sachgruppe": "Wohn- und Gartenzeitschriften",
"Verlag / Herausgeber": "Landwirtschaftsverlag Münster"
},
{
"Rang": 26,
"Titel": "on job",
"Auflage": "1.009.720",
"Gruppe": "Kunden",
"Sachgruppe": "Medizin/Gesundheit",
"Verlag / Herausgeber": "wdv-Gruppe"
},
{
"Rang": 27,
"Titel": "Neue Apotheken Illustrierte",
"Auflage": "1.007.370",
"Gruppe": "Kunden",
"Sachgruppe": "Apotheken/Medizin/Gesundheit",
"Verlag / Herausgeber": "Bundesvereinigung Deutscher Apothekerverbände"
},
{
"Rang": 28,
"Titel": "TV Spielfilm",
"Auflage": 934.291,
"Gruppe": "Publikum",
"Sachgruppe": "Programmzeitschriften",
"Verlag / Herausgeber": "Hubert Burda Media"
},
{
"Rang": 29,
"Titel": "Auf einen Blick",
"Auflage": 921.049,
"Gruppe": "Publikum",
"Sachgruppe": "Programmzeitschriften",
"Verlag / Herausgeber": "Bauer Media Group"
},
{
"Rang": 30,
"Titel": "Schrot & Korn Naturkostmagazin",
"Auflage": 888.063,
"Gruppe": "Kunden",
"Sachgruppe": "Lebensmittel",
"Verlag / Herausgeber": "Bio Verlag GmbH"
},
{
"Rang": 31,
"Titel": "Der Spiegel",
"Auflage": 843.085,
"Gruppe": "Publikum",
"Sachgruppe": "Aktuelle Zeitschriften und Magazine",
"Verlag / Herausgeber": "SPIEGEL-Verlag"
},
{
"Rang": 32,
"Titel": "Bild der Frau",
"Auflage": 832.226,
"Gruppe": "Publikum",
"Sachgruppe": "Wöchentliche Frauenzeitschriften",
"Verlag / Herausgeber": "Funke Mediengruppe"
},
{
"Rang": 33,
"Titel": "extra / tour",
"Auflage": 774.431,
"Gruppe": "Publikum",
"Sachgruppe": "Reisezeitschriften",
"Verlag / Herausgeber": "Deutsches Jugendherbergswerk"
},
{
"Rang": 34,
"Titel": "Freizeit Revue",
"Auflage": 764.162,
"Gruppe": "Publikum",
"Sachgruppe": "Wöchentliche Frauenzeitschriften",
"Verlag / Herausgeber": "Hubert Burda Media"
},
{
"Rang": 35,
"Titel": "Baby und Familie",
"Auflage": 749.425,
"Gruppe": "Kunden",
"Sachgruppe": "Apotheken/Medizin/Gesundheit",
"Verlag / Herausgeber": "Wort & Bild Verlag"
},
{
"Rang": 36,
"Titel": "KONPRESS",
"Auflage": 731.664,
"Gruppe": "Publikum",
"Sachgruppe": "Konfessionelle Zeitschriften",
"Verlag / Herausgeber": "KONPRESS-Medien eG"
},
{
"Rang": 37,
"Titel": "Stern",
"Auflage": 725.959,
"Gruppe": "Publikum",
"Sachgruppe": "Aktuelle Zeitschriften und Magazine",
"Verlag / Herausgeber": "Gruner + Jahr"
},
{
"Rang": 38,
"Titel": "JUNIOR Kinderzeitschriften",
"Auflage": 679.795,
"Gruppe": "Kunden",
"Sachgruppe": "Apotheken/Medizin/Gesundheit",
"Verlag / Herausgeber": ""
},
{
"Rang": 39,
"Titel": "on",
"Auflage": 654.628,
"Gruppe": "Kunden",
"Sachgruppe": "Medizin/Gesundheit",
"Verlag / Herausgeber": "wdv-Gruppe"
},
{
"Rang": 40,
"Titel": "TV Hören und Sehen",
"Auflage": 653.399,
"Gruppe": "Publikum",
"Sachgruppe": "Programmzeitschriften",
"Verlag / Herausgeber": "Bauer Media Group"
},
{
"Rang": 41,
"Titel": "MieterZeitung",
"Auflage": 643.231,
"Gruppe": "Kunden",
"Sachgruppe": "Sonstige",
"Verlag / Herausgeber": "Deutscher Mieterbund"
},
{
"Rang": 42,
"Titel": "Kompakt",
"Auflage": 639.69,
"Gruppe": "Publikum",
"Sachgruppe": "Sonstige Zeitschriften National",
"Verlag / Herausgeber": "IG Bergbau, Chemie, Energie"
},
{
"Rang": 43,
"Titel": "DAV Panorama",
"Auflage": 638.493,
"Gruppe": "Publikum",
"Sachgruppe": "Sportzeitschriften",
"Verlag / Herausgeber": "Deutscher Alpenverein"
},
{
"Rang": 44,
"Titel": "NurTV",
"Auflage": 618.623,
"Gruppe": "Publikum",
"Sachgruppe": "Programmzeitschriften",
"Verlag / Herausgeber": "Funke Mediengruppe"
},
{
"Rang": 45,
"Titel": "Neue Post",
"Auflage": 613.572,
"Gruppe": "Publikum",
"Sachgruppe": "Wöchentliche Frauenzeitschriften",
"Verlag / Herausgeber": "Bauer Media Group"
},
{
"Rang": 46,
"Titel": "ACE-Lenkrad",
"Auflage": 580.877,
"Gruppe": "Publikum",
"Sachgruppe": "Motorpresse",
"Verlag / Herausgeber": "Auto Club Europa"
},
{
"Rang": 47,
"Titel": "Der Vermögensberater",
"Auflage": 564.27,
"Gruppe": "Publikum",
"Sachgruppe": "Wirtschaftspresse",
"Verlag / Herausgeber": "Deutsche Vermögensberatung"
},
{
"Rang": 48,
"Titel": "tv pur",
"Auflage": 561.959,
"Gruppe": "Publikum",
"Sachgruppe": "Programmzeitschriften",
"Verlag / Herausgeber": "Bauer Media Group"
},
{
"Rang": 49,
"Titel": "DBB-Magazin",
"Auflage": 542.491,
"Gruppe": "Fach",
"Sachgruppe": "Recht und Verwaltung",
"Verlag / Herausgeber": "dbb beamtenbund und tarifunion"
},
{
"Rang": 50,
"Titel": "Fondsmagazin",
"Auflage": 538.389,
"Gruppe": "Kunden",
"Sachgruppe": "Finanzdienstleistungen",
"Verlag / Herausgeber": ""
},
{
"Rang": 51,
"Titel": "Brigitte",
"Auflage": 533.661,
"Gruppe": "Publikum",
"Sachgruppe": "14-tägliche Frauenzeitschriften",
"Verlag / Herausgeber": "Gruner + Jahr"
},
{
"Rang": 52,
"Titel": "rotkreuzmagazin für Mitglieder, Freunde und",
"Auflage": 531.254,
"Gruppe": "Publikum",
"Sachgruppe": "Gesundheitsmagazine",
"Verlag / Herausgeber": ""
},
{
"Rang": 53,
"Titel": "Bunte",
"Auflage": 519.57,
"Gruppe": "Publikum",
"Sachgruppe": "Aktuelle Zeitschriften und Magazine",
"Verlag / Herausgeber": "Hubert Burda Media"
},
{
"Rang": 54,
"Titel": "Focus",
"Auflage": 508.489,
"Gruppe": "Publikum",
"Sachgruppe": "Aktuelle Zeitschriften und Magazine",
"Verlag / Herausgeber": "Hubert Burda Media"
},
{
"Rang": 55,
"Titel": "HausArzt - PatientenMagazin",
"Auflage": 479.45,
"Gruppe": "Kunden",
"Sachgruppe": "Apotheken/Medizin/Gesundheit",
"Verlag / Herausgeber": "Wort & Bild Verlag"
},
{
"Rang": 56,
"Titel": "Frau und Mutter",
"Auflage": 474.649,
"Gruppe": "Publikum",
"Sachgruppe": "Monatliche Frauenzeitschriften",
"Verlag / Herausgeber": "Katholische Frauengemeinschaft Deutschlands"
},
{
"Rang": 57,
"Titel": "Auto Bild",
"Auflage": 461.539,
"Gruppe": "Publikum",
"Sachgruppe": "Motorpresse",
"Verlag / Herausgeber": "Axel Springer"
},
{
"Rang": 58,
"Titel": "mkv Apotheken-Kombi TV Gesund & Leben, LindaMagazin",
"Auflage": 458.807,
"Gruppe": "Kunden",
"Sachgruppe": "Apotheken/Medizin/Gesundheit",
"Verlag / Herausgeber": "mkv medienkontor Verlagsgesellschaft mbH & Co. KG"
},
{
"Rang": 59,
"Titel": "Funk Uhr",
"Auflage": 453.55,
"Gruppe": "Publikum",
"Sachgruppe": "Programmzeitschriften",
"Verlag / Herausgeber": "Axel Springer"
},
{
"Rang": 60,
"Titel": "eve Magazin",
"Auflage": 441.139,
"Gruppe": "Kunden",
"Sachgruppe": "Lebensmittel",
"Verlag / Herausgeber": "TERRITORY CTR GmbH"
},
{
"Rang": 61,
"Titel": "Das Neue Blatt",
"Auflage": 433.918,
"Gruppe": "Publikum",
"Sachgruppe": "Wöchentliche Frauenzeitschriften",
"Verlag / Herausgeber": "Bauer Media Group"
},
{
"Rang": 62,
"Titel": "Freizeitwoche",
"Auflage": 427.633,
"Gruppe": "Publikum",
"Sachgruppe": "Wöchentliche Frauenzeitschriften",
"Verlag / Herausgeber": "Bauer Media Group"
},
{
"Rang": 63,
"Titel": "vigo GESUNDHEIT 65",
"Auflage": 425.688,
"Gruppe": "Kunden",
"Sachgruppe": "Medizin/Gesundheit",
"Verlag / Herausgeber": ""
},
{
"Rang": 64,
"Titel": "SoVD Zeitung - Soziales im Blick",
"Auflage": 410.809,
"Gruppe": "Fach",
"Sachgruppe": "Sonstige",
"Verlag / Herausgeber": ""
},
{
"Rang": 65,
"Titel": "Tina",
"Auflage": 403.493,
"Gruppe": "Publikum",
"Sachgruppe": "Wöchentliche Frauenzeitschriften",
"Verlag / Herausgeber": "Bauer Media Group"
},
{
"Rang": 66,
"Titel": "Reader´s Digest Das Beste",
"Auflage": 401.698,
"Gruppe": "Publikum",
"Sachgruppe": "Aktuelle Zeitschriften und Magazine",
"Verlag / Herausgeber": "Readers Digest Association"
},
{
"Rang": 67,
"Titel": "Vorwärts",
"Auflage": 394.892,
"Gruppe": "Publikum",
"Sachgruppe": "Sonstige Zeitschriften National",
"Verlag / Herausgeber": "Sozialdemokratische Partei Deutschlands"
},
{
"Rang": 68,
"Titel": "Meine Familie & ich",
"Auflage": 390.339,
"Gruppe": "Publikum",
"Sachgruppe": "Esszeitschriften",
"Verlag / Herausgeber": ""
},
{
"Rang": 69,
"Titel": "Fernsehwoche",
"Auflage": 388.28,
"Gruppe": "Publikum",
"Sachgruppe": "Programmzeitschriften",
"Verlag / Herausgeber": "Bauer Media Group"
},
{
"Rang": 70,
"Titel": "Die Aktuelle",
"Auflage": 369.428,
"Gruppe": "Publikum",
"Sachgruppe": "Wöchentliche Frauenzeitschriften",
"Verlag / Herausgeber": "FUNKE Women Group GmbH"
},
{
"Rang": 71,
"Titel": "Freundin",
"Auflage": 366.039,
"Gruppe": "Publikum",
"Sachgruppe": "14-tägliche Frauenzeitschriften",
"Verlag / Herausgeber": "Hubert Burda Media"
},
{
"Rang": 72,
"Titel": "Sport Bild",
"Auflage": 357.91,
"Gruppe": "Publikum",
"Sachgruppe": "Sportzeitschriften",
"Verlag / Herausgeber": "Axel Springer"
},
{
"Rang": 73,
"Titel": "Familienheim und Garten",
"Auflage": 357.712,
"Gruppe": "Fach",
"Sachgruppe": "Freizeit und Hobby",
"Verlag / Herausgeber": ""
},
{
"Rang": 74,
"Titel": "InStyle",
"Auflage": 357.418,
"Gruppe": "Publikum",
"Sachgruppe": "Monatliche Frauenzeitschriften",
"Verlag / Herausgeber": "Hubert Burda Media"
},
{
"Rang": 75,
"Titel": "Freizeit Spass",
"Auflage": 356.487,
"Gruppe": "Publikum",
"Sachgruppe": "Wöchentliche Frauenzeitschriften",
"Verlag / Herausgeber": "Hubert Burda Media"
},
{
"Rang": 76,
"Titel": "auto motor und sport",
"Auflage": 352.622,
"Gruppe": "Publikum",
"Sachgruppe": "Motorpresse",
"Verlag / Herausgeber": "Motor Presse Stuttgart"
},
{
"Rang": 77,
"Titel": "Deutsches Ärzteblatt",
"Auflage": 351.982,
"Gruppe": "Fach",
"Sachgruppe": "Medizin und Gesundheitswesen",
"Verlag / Herausgeber": "Deutscher Ärzte-Verlag"
},
{
"Rang": 78,
"Titel": "Laviva",
"Auflage": 335.934,
"Gruppe": "Publikum",
"Sachgruppe": "Monatliche Frauenzeitschriften",
"Verlag / Herausgeber": "Axel Springer Vertriebsservice GmbH"
},
{
"Rang": 79,
"Titel": "mein schönes Land",
"Auflage": 335.33,
"Gruppe": "Publikum",
"Sachgruppe": "Wohn- und Gartenzeitschriften",
"Verlag / Herausgeber": ""
},
{
"Rang": 80,
"Titel": "Computer Bild",
"Auflage": 334.72,
"Gruppe": "Publikum",
"Sachgruppe": "IT-/Telekommunikationszeitschriften",
"Verlag / Herausgeber": "Axel Springer"
},
{
"Rang": 81,
"Titel": "TV für mich",
"Auflage": 334.4,
"Gruppe": "Publikum",
"Sachgruppe": "Programmzeitschriften",
"Verlag / Herausgeber": "Gong Verlag"
},
{
"Rang": 82,
"Titel": "Lufthansa Magazin Exclusive",
"Auflage": 317.446,
"Gruppe": "Kunden",
"Sachgruppe": "Reisen/Verkehrsgesellschaften",
"Verlag / Herausgeber": ""
},
{
"Rang": 83,
"Titel": "Gala",
"Auflage": 315.745,
"Gruppe": "Publikum",
"Sachgruppe": "Aktuelle Zeitschriften und Magazine",
"Verlag / Herausgeber": "Gruner + Jahr"
},
{
"Rang": 84,
"Titel": "Glamour",
"Auflage": 314.832,
"Gruppe": "Publikum",
"Sachgruppe": "Monatliche Frauenzeitschriften",
"Verlag / Herausgeber": "Condé Nast Verlag"
},
{
"Rang": 85,
"Titel": "SUPERillu",
"Auflage": 314.807,
"Gruppe": "Publikum",
"Sachgruppe": "Aktuelle Zeitschriften und Magazine",
"Verlag / Herausgeber": "Hubert Burda Media"
},
{
"Rang": 86,
"Titel": "Gartenfreund/Siedlung und Eigenheim",
"Auflage": 314.601,
"Gruppe": "Publikum",
"Sachgruppe": "Wohn- und Gartenzeitschriften",
"Verlag / Herausgeber": ""
},
{
"Rang": 87,
"Titel": "Naturschutz heute",
"Auflage": 313.871,
"Gruppe": "Publikum",
"Sachgruppe": "Naturzeitschriften",
"Verlag / Herausgeber": "NABU Media-Agentur"
},
{
"Rang": 88,
"Titel": "Für Sie",
"Auflage": 307.31,
"Gruppe": "Publikum",
"Sachgruppe": "14-tägliche Frauenzeitschriften",
"Verlag / Herausgeber": "Jahreszeiten Verlag"
},
{
"Rang": 89,
"Titel": "Deutsches Ärzteblatt Kombi Praxis/Klinik",
"Auflage": 297.952,
"Gruppe": "Fach",
"Sachgruppe": "Medizin und Gesundheitswesen",
"Verlag / Herausgeber": ""
},
{
"Rang": 90,
"Titel": "Mein schöner Garten",
"Auflage": 297.636,
"Gruppe": "Publikum",
"Sachgruppe": "Wohn- und Gartenzeitschriften",
"Verlag / Herausgeber": "Hubert Burda Media"
},
{
"Rang": 91,
"Titel": "TV Today",
"Auflage": 287.221,
"Gruppe": "Publikum",
"Sachgruppe": "Programmzeitschriften",
"Verlag / Herausgeber": "Hubert Burda Media"
},
{
"Rang": 92,
"Titel": "on uni",
"Auflage": 279.705,
"Gruppe": "Kunden",
"Sachgruppe": "Medizin/Gesundheit",
"Verlag / Herausgeber": "wdv-Gruppe"
},
{
"Rang": 93,
"Titel": "Cosmopolitan",
"Auflage": 276.314,
"Gruppe": "Publikum",
"Sachgruppe": "Monatliche Frauenzeitschriften",
"Verlag / Herausgeber": "Bauer Media Group"
},
{
"Rang": 94,
"Titel": "Land IDEE",
"Auflage": 272.838,
"Gruppe": "Publikum",
"Sachgruppe": "Wohn- und Gartenzeitschriften",
"Verlag / Herausgeber": "Funke Mediengruppe"
},
{
"Rang": 95,
"Titel": "Frau im Trend",
"Auflage": 272.295,
"Gruppe": "Publikum",
"Sachgruppe": "Wöchentliche Frauenzeitschriften",
"Verlag / Herausgeber": "Hubert Burda Media"
},
{
"Rang": 96,
"Titel": "c't magazin für computertechnik",
"Auflage": 270.517,
"Gruppe": "Publikum",
"Sachgruppe": "IT-/Telekommunikationszeitschriften",
"Verlag / Herausgeber": "Heise Zeitschriften Verlag"
},
{
"Rang": 97,
"Titel": "kinder!",
"Auflage": 269.841,
"Gruppe": "Publikum",
"Sachgruppe": "Elternzeitschriften",
"Verlag / Herausgeber": "Junior-Verlag GmbH & Co. KG (Hamburg)"
},
{
"Rang": 98,
"Titel": "TV piccolino plus + (TV piccolino+TV Genie+My TV)",
"Auflage": 266.345,
"Gruppe": "Publikum",
"Sachgruppe": "Programmzeitschriften",
"Verlag / Herausgeber": ""
},
{
"Rang": 99,
"Titel": "Erziehung und Wissenschaft",
"Auflage": 263.359,
"Gruppe": "Fach",
"Sachgruppe": "Erziehung und Bildung",
"Verlag / Herausgeber": "STAMM Verlag GmbH"
},
{
"Rang": 100,
"Titel": "ACV Profil",
"Auflage": 257.7,
"Gruppe": "Publikum",
"Sachgruppe": "Motorpresse",
"Verlag / Herausgeber": ""
}
]