def authors_json(soup):
authors_json_data = []<EOL>contributors_data = contributors(soup, "<STR_LIT>")<EOL>author_contributions_data = author_contributions(soup, None)<EOL>author_competing_interests_data = competing_interests(soup, None)<EOL>author_correspondence_data = full_correspondence(soup)<EOL>authors_non_byline_data = authors_non_byline(soup)<EOL>equal_contributions_map = map_equal_contributions(contributors_data)<EOL>present_address_data = present_addresses(soup)<EOL>foot_notes_data = other_foot_notes(soup)<EOL>for contributor in contributors_data:<EOL><INDENT>author_json = None<EOL>if contributor["<STR_LIT:type>"] == "<STR_LIT>" and contributor.get("<STR_LIT>"):<EOL><INDENT>author_json = author_group(contributor, author_contributions_data,<EOL>author_correspondence_data, author_competing_interests_data,<EOL>equal_contributions_map, present_address_data,<EOL>foot_notes_data)<EOL><DEDENT>elif contributor.get("<STR_LIT>"):<EOL><INDENT>author_json = author_on_behalf_of(contributor)<EOL><DEDENT>elif contributor["<STR_LIT:type>"] == "<STR_LIT>" and not contributor.get("<STR_LIT>"):<EOL><INDENT>author_json = author_person(contributor, author_contributions_data,<EOL>author_correspondence_data, author_competing_interests_data,<EOL>equal_contributions_map, present_address_data, foot_notes_data)<EOL><DEDENT>if author_json:<EOL><INDENT>authors_json_data.append(author_json)<EOL><DEDENT><DEDENT>collab_map = collab_to_group_author_key_map(contributors_data)<EOL>for contributor in [elem for elem in contributors_data if elem.get("<STR_LIT>") and not elem.get("<STR_LIT>")]:<EOL><INDENT>for group_author in [elem for elem in authors_json_data if elem.get('<STR_LIT:type>') == '<STR_LIT>']:<EOL><INDENT>group_author_key = None<EOL>if group_author["<STR_LIT:name>"] in collab_map:<EOL><INDENT>group_author_key = collab_map[group_author["<STR_LIT:name>"]]<EOL><DEDENT>if contributor.get("<STR_LIT>") == group_author_key:<EOL><INDENT>author_json = author_person(contributor, author_contributions_data,<EOL>author_correspondence_data, author_competing_interests_data,<EOL>equal_contributions_map, present_address_data, foot_notes_data)<EOL>if contributor.get("<STR_LIT>"):<EOL><INDENT>if "<STR_LIT>" not in group_author:<EOL><INDENT>group_author["<STR_LIT>"] = OrderedDict()<EOL><DEDENT>if contributor.get("<STR_LIT>") not in group_author["<STR_LIT>"]:<EOL><INDENT>group_author["<STR_LIT>"][contributor.get("<STR_LIT>")] = []<EOL><DEDENT>group_author["<STR_LIT>"][contributor.get("<STR_LIT>")].append(author_json)<EOL><DEDENT>else:<EOL><INDENT>if "<STR_LIT>" not in group_author:<EOL><INDENT>group_author["<STR_LIT>"] = []<EOL><DEDENT>group_author["<STR_LIT>"].append(author_json)<EOL><DEDENT><DEDENT><DEDENT><DEDENT>authors_json_data_rewritten = elifetools.json_rewrite.rewrite_json("<STR_LIT>", soup, authors_json_data)<EOL>return authors_json_data_rewritten<EOL>
authors list in article json format