Since I've been working on something similar the past couple days (not the json part), I'll throw this out there. I'm not sure how you parsed your lat, longs, but this assuming a PtID, long, lat like
ptList = [[104, -148.631196, 64.010037], [102, -147.707779, 63.680584], [103, -147.469019, 63.975227]]
This script will take a structure like that, create a FC in DD, add the x/y as fields for kicks, then project to you desired wkid (mine is 3338, AK Albers). I have also used AlterField (not shown here) on the field POINT_X, POINT_Y so I could use the addxy again in the projected FC (and a bunch of other fields). If you don't have a PtID field,m or you input is a bit different, that will have to be modified.
See if this will help.
import os
import arcpy
from arcpy import env
theWorkspace = r'C:\__temp\test.gdb'
arcpy.env.workspace = theWorkspace #not until final save
arcpy.env.overwriteOutput = True
# pts with a ID, long, lat
ptList = [[104, -148.631196, 64.010037], [102, -147.707779, 63.680584], [103, -147.469019, 63.975227]]
ptFields = [["PtID", "SHORT", "5", "", ""]]
newFcs = [["newpts", ptFields]] # , ["tmppt2", pt2Fields], ["tmppt3", pt2Fields]]
newFCMySR = "newPtsMySR"
mySR = arcpy.SpatialReference(3338)
geoSR = arcpy.SpatialReference(4269)
for newFC, fields in newFcs:
print(newFC)
if not arcpy.Exists(arcpy.os.path.join(theWorkspace, newFC)):
print("{0} does not exists, creating....".format(newFC))
arcpy.CreateFeatureclass_management(theWorkspace, newFC, "POINT", "", "", "", initialSR)
for addFld in fields:
arcpy.AddField_management(newFC, addFld[0], addFld[1], addFld[2], addFld[3], addFld[4])
print(" ..added field {0} to {1}".format(addFld[0], newFC))
#listNewFields = arcpy.ListFields(newFC)
else:
print("{0} exists".format(newFC))
for newFC, newFields in newFcs:
fldNames = []
iCurFields = ['SHAPE@XY']
for fn in newFields:
print(fn[0])
fldNames.append(fn[0])
iCurFields.append(fn[0])
print("\nField names in lists {0}: {1}".format(newFC,fldNames))
print(" and for the cursor: {0}".format(iCurFields))
cursor = arcpy.da.InsertCursor(newFC, iCurFields)
print(" ->working with {0}".format(newFC))
for ptID, x, y in ptList:
print(ptID)
xy = (x, y)
print(xy)
cursor.insertRow([xy, ptID])
arcpy.AddXY_management(newFC)
arcpy.Project_management(newFC, newFCMySR, mySR)