Попытка превратить массив JSON в проблему поля - PullRequest
0 голосов
/ 19 мая 2018

У меня есть следующий JSON, который анализирует ОК: я хочу отправить только некоторые данные кода термина.

[{
"TermCode": 2164,
"ACAD_LEVEL_BOT": "GR",
"ACAD_LEVEL_EOT": "GR",
"ACAD_CAREER": "GRAD",
"UA_PRIM_MAJ_PLN": "DPMDP",
"UA_DEGR_DT": "1900-01-01",
"UA_PRIM_MJ_PLN_DES": "Development Practice",
"UA_PRIM_MIN_PLN_D": "-",
"CUM_GPA": 3.707,
"CUR_GPA": 4,
"TOT_CUMULATIVE": 300,
"UNT_PASSD_PRGRSS": 10,
"UNT_TAKEN_PRGRSS": 10,
"UA_PRIM_MJ_PLN_OWN": "School of Anthropology",
"ADMIT_TYPE": "GRD",
"ADMIT_TERM": "2144",
"UA_FA_ST_RES_DESCR": "Resident",
"VISA_PERMIT_TYPE": "-",
"UA_SALT_ROSTER": "-",
"UA_SALT_STATUS": "-",
"DEGR_CHKOUT_STAT": "-",
"EXP_GRAD_TERM": "-",
"UNT_TRNSFR": 0,
"ACAD_PROG_LD": "Graduate Degree Seeking",
"TOT_TRNSFR": 0,
"TUITION_RES": "RES",
"UA_CITIZEN_COUNTRY": "United States",
"UA_CITIZEN_ST_DESC": "Citizen",
"ACADEMIC_LOAD": "F",
"UNT_AUDIT": 0,
"CAMPUS": "MAIN",
"ACADEMIC_YEAR": "2016-2017",
"UA_DEGREE_LEVEL": "Masters",
"ACAD_PROG": "GDEG",
"UA_SEC_MAJ_PLN": "-",
"ACAD_ORG": "0410",
"EFF_START_DT": "2016-12-18 20:37:08",
"CURRENT_IND": "N",
"PROG_STATUS": "AC",
"PROG_ACTION": "MATR"

}]

Я хочу использовать этот массив какполе с именем term data, поэтому я пытаюсь:

[{
termdata: [{
    "TermCode": 2164,
    "ACAD_LEVEL_BOT": "GR",
    "ACAD_LEVEL_EOT": "GR",
    "ACAD_CAREER": "GRAD",
    "UA_PRIM_MAJ_PLN": "DPMDP",
    "UA_DEGR_DT": "1900-01-01",
    "UA_PRIM_MJ_PLN_DES": "Development Practice",
    "UA_PRIM_MIN_PLN_D": "-",
    "CUM_GPA": 3.707,
    "CUR_GPA": 4,
    "TOT_CUMULATIVE": 300,
    "UNT_PASSD_PRGRSS": 10,
    "UNT_TAKEN_PRGRSS": 10,
    "UA_PRIM_MJ_PLN_OWN": "School of Anthropology",
    "ADMIT_TYPE": "GRD",
    "ADMIT_TERM": "2144",
    "UA_FA_ST_RES_DESCR": "Resident",
    "VISA_PERMIT_TYPE": "-",
    "UA_SALT_ROSTER": "-",
    "UA_SALT_STATUS": "-",
    "DEGR_CHKOUT_STAT": "-",
    "EXP_GRAD_TERM": "-",
    "UNT_TRNSFR": 0,
    "ACAD_PROG_LD": "Graduate Degree Seeking",
    "TOT_TRNSFR": 0,
    "TUITION_RES": "RES",
    "UA_CITIZEN_COUNTRY": "United States",
    "UA_CITIZEN_ST_DESC": "Citizen",
    "ACADEMIC_LOAD": "F",
    "UNT_AUDIT": 0,
    "CAMPUS": "MAIN",
    "ACADEMIC_YEAR": "2016-2017",
    "UA_DEGREE_LEVEL": "Masters",
    "ACAD_PROG": "GDEG",
    "UA_SEC_MAJ_PLN": "-",
    "ACAD_ORG": "0410",
    "EFF_START_DT": "2016-12-18 20:37:08",
    "CURRENT_IND": "N",
    "PROG_STATUS": "AC",
    "PROG_ACTION": "MATR"
}]      }]

Однако это не анализирует.Что не так с моим синтаксисом?В переполнении стека произошла ошибка, из-за которой я не могу закончить свой вопрос здесь, поэтому мне нужно добавить описание, пожалуйста, вниз, стрелка вниз, у меня не было выбора.Поэтому следующим моим шагом будет использование json, например: [{termdata: jsonarray, coursedata: jsonarray, admitdata: jsonarray}] Любые мысли по этому поводу также будут оценены.

1 Ответ

0 голосов
/ 19 мая 2018

Для отладки небольших фрагментов, таких как ваш, вы можете использовать https://jsonlint.com,, который выдает полезные сообщения об ошибках, облегчающие выявление проблемы.

В качестве альтернативы, которая также работает для больших файлов, выможет рассмотреть jq.С вашим фрагментом в файле "input.txt" вызов:

jq empty input.txt

выдает сообщение об ошибке:

Ошибка синтаксического анализа: неверный литерал в строке 2, столбец 9

Это означает, что первый ключ не был правильно заключен в кавычки.

(Здесь empty имеет эффект подавления нормального вывода.)

Пусть jq делает ходьбу

Еще лучше, вы можете избавить себя от хлопот, позволив jqвыполните работу:

jq '[{termdata:.}]' original.json

Это даст желаемый результат.Если не указано иное, jq принимает JSON (или поток JSON) и создает JSON (или поток JSON).

Вы также можете использовать jq для более сложных преобразований с несколькими входными файлами.

...