Issue 1:
Code Sample, a copy-pastable example if possible

from pandas.io.json import json_normalize

json_normalize({'A': {'B': [{'X': 1, 'Y': 2}, {'X': 3, 'Y': 4}]}}, ['A', 'B'])

Note: change from json_normalize({'A': {'B': [1, 2]}}, ['A', 'B']) to distinguish from #21608

Problem description

The above code throws a TypeError:

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Python36\lib\site-packages\pandas\io\json\normalize.py", line 257, in json_normalize
_recursive_extract(data, record_path, {}, level=0)
File "C:\Python36\lib\site-packages\pandas\io\json\normalize.py", line 230, in _recursive_extract
seen_meta, level=level + 1)
File "C:\Python36\lib\site-packages\pandas\io\json\normalize.py", line 233, in _recursive_extract
recs = _pull_field(obj, path[0])
File "C:\Python36\lib\site-packages\pandas\io\json\normalize.py", line 180, in _pull_field
result = result[spec]
TypeError: string indices must be integers

Expected Output

X
Y

0
1
2

1
3
4

Output of pd.show_versions()

INSTALLED VERSIONS
------------------
commit: None
python: 3.6.4.final.0
python-bits: 64
OS: Windows
OS-release: 10
machine: AMD64
processor: Intel64 Family 6 Model 62 Stepping 4, GenuineIntel
byteorder: little
LC_ALL: None
LANG: None
LOCALE: None.None

pandas: 0.23.1

pytest: 3.6.1

pip: 10.0.1

setuptools: 28.8.0

Cython: None

numpy: 1.14.2

scipy: None

pyarrow: None

xarray: None

IPython: 6.3.1

sphinx: None

patsy: None

dateutil: 2.7.2

pytz: 2018.4

blosc: None

bottleneck: None

tables: None

numexpr: None

feather: None

matplotlib: None

openpyxl: None

xlrd: None

xlwt: None

xlsxwriter: None

lxml: None

bs4: 4.6.0

html5lib: 1.0.1

sqlalchemy: None

pymysql: None

psycopg2: None

jinja2: 2.10

s3fs: None

fastparquet: None

pandas_gbq: None

pandas_datareader: None

Issue 2:
Current conversion of R objects into Python usng pandas2ri.ri2py does not work for the <class 'rpy2.robjects.vectors.ListVector'> object. As noted here, pandas2ri.py2ri() and pandas2ri.ri2py() are current methods to handle conversion. However, previous deprecated com.convert_robj() correctly converts the R object to Python dictionary:

import rpy2
from rpy2.robjects.numpy2ri import numpy2ri
from rpy2.robjects.packages import importr
import numpy as np

# FISHER EXACT TEST EXAMPLE
cont = np.reshape(np.arange(0,4), (2,2))
statspackage = importr('stats', robject_translations={'format_perc': '_format_perc'})
result = statspackage.fisher_test(numpy2ri(cont), simulate_p_value = True, B = 100)

# DEPRECATED CONVERSION
import pandas.rpy.common as com
pyresultdict = com.convert_robj(result)

print(type(pyresultdict)) # PYTHON DICTIONARY TYPE

# CURRENT CONVERSION
from rpy2.robjects import pandas2ri
pandas2ri.activate()
pyresultdict = pandas2ri.ri2py(result)

print(type(pyresultdict)) # REMAINS R LISTVECTOR TYPE

# Expected Output
<class 'dict'>
<class 'dict'>

# output of rpy2.__version__
2.5.4

# output of pd.show_versions()
INSTALLED VERSIONS
------------------
commit: None
python: 3.4.1.final.0
python-bits: 64
OS: Windows
OS-release: 8
machine: AMD64
processor: Intel64 Family 6 Model 37 Stepping 2, GenuineIntel
byteorder: little
LC_ALL: None
LANG: None

pandas: 0.18.0
nose: None
pip: 8.1.0
setuptools: 2.1
Cython: None
numpy: 1.10.4
scipy: 0.17.0
...