附加JSON值但不能得到格式良好的python

时间:2016-09-30 05:51:54

标签: json python-2.7

    this is my code:
        import json
        from pprint import pprint

        with open('unAnsQuestions.json') as data_file:    
            data = json.load(data_file)
        print(len(data))
        json_len = len(data)
        json_len+=1
        with open('unAnsQuestions.json', "a") as json_file:
            json.dump({'id':json_len,'fileName':'yogesh'},json_file,indent=2)
            #json_file.write("{}\n".format(json.dumps(json_len)))


                       [{
                      "id":1,
                      "text":"hey?",
                      "answer":"hi" 
                       },
                       {
                      "id":2,
                      "text":"bye.?",
                      "answer":"see you"   
                    }]
  • 这是我的代码,它在json文件中追加两个值。第一个是id和 另一个是文件名。接下来是我想要的json结构 追加数据             - 我想在json文件中追加值。              - 所以我有Question.json,其中包含一些数据:
                   但是当我要附加一些值时,我会得到这个输出                格式不正确。我想在括号'[]'中使用此值。

                  [{
                      "id":1,
                      "text":"hey?",
                      "answer":"hi" 
                       },
                       {
                      "id":2,
                      "text":"bye.?",
                      "answer":"see you"   
                    }]
                     {
                     "id": 3, 
                     "text":"bye.?",
                     "answer":"see you"
                      }
    
        so, the  "]" is not well formatted. I tried many times but I didn't get output.can you please tell me the exact way?
    

2 个答案:

答案 0 :(得分:1)

数据存储为文件中的对象数组。 在转储之前,数据需要附加在数组中。 附加后,需要重写文件,即转储数据变量。

import json from pprint 
import pprint
with open('unAnsQuestions.json') as data_file: 
  data = json.load(data_file)
  print(len(data))
  json_len = len(data)
  json_len+=1 
  with open('unAnsQuestions.json', "w") as json_file: //  write the file not append to it
    data.append({'id':json_len,'fileName':'yogesh'}) // add data in array at last index
    json.dump(data,json_file,inde‌​nt=2) // dump the array
    #json_file.write("{}\n".format(json.dumps(json_len)))

答案 1 :(得分:0)

您应该找到并阅读基本的Python教程;你似乎对事情的工作方式有一些误解(例如,你向json_len加1,但你不明白这样做对data)没有影响。

要将元素附加到您已阅读过的数据中,只需使用append()

data.append({'id':3, 'text': 'buh-bye', 'answer':'huh?'})

之后,json_file.write(json.dumps(data))将为该文件添加一个新元素。