Konvertieren von JSON-String in Dictionary Not List

Lesezeit: 6 Minuten

Konvertieren von JSON String in Dictionary Not List
Gesetz

Ich versuche, eine JSON-Datei zu übergeben und die Daten in ein Wörterbuch zu konvertieren.

Bisher habe ich folgendes gemacht:

import json
json1_file = open('json1')
json1_str = json1_file.read()
json1_data = json.loads(json1_str)

ich erwarte json1_data ein … zu sein dict Typ, aber es kommt tatsächlich als ein heraus list tippe wenn ich es überprüfe mit type(json1_data).

Was vermisse ich? Ich brauche das als Wörterbuch, damit ich auf einen der Schlüssel zugreifen kann.

  • Können Sie uns ein Beispiel Ihrer JSON-Datei zeigen?

    – Mac

    20. Oktober 13 um 21:58 Uhr

  • Ich versuche, auf den Schlüssel „Datenpunkte“ zuzugreifen graphit.sdsc.edu:8443/render/…

    – Lawchit

    20. Oktober 13 um 22:03 Uhr


  • Ihr Basiselement ist eine Liste. Versuchen json1_data[0]['datapoints'].

    – gddc

    20. Oktober 13 um 22:05 Uhr

  • Bei einer Vermutung würde ich sagen, dass Ihr Json eine Liste ist, kein Wörterbuch

    – Joran Beasley

    20. Oktober 13 um 22:05 Uhr

  • Nach dem, was unser Ausbilder uns gezeigt hat, als er (json1_data) eingegeben hat, wurde sein Typ als „dict“ angezeigt. Vielen Dank für die Hilfe an alle!

    – Lawchit

    20. Oktober 13 um 22:11 Uhr

1643914567 930 Konvertieren von JSON String in Dictionary Not List
DaoWen

Ihr JSON ist ein Array mit einem einzelnen Objekt darin, wenn Sie es also einlesen, erhalten Sie eine Liste mit einem Wörterbuch darin. Sie können auf Ihr Wörterbuch zugreifen, indem Sie auf Element 0 in der Liste zugreifen, wie unten gezeigt:

json1_data = json.loads(json1_str)[0]

Jetzt können Sie auf die gespeicherten Daten zugreifen Datenpunkte so wie du es erwartet hast:

datapoints = json1_data['datapoints']

Ich habe noch eine Frage, falls jemand beißen kann: Ich versuche, den Durchschnitt der ersten Elemente in diesen Datenpunkten zu nehmen (dh Datenpunkte[0][0]). Nur um sie aufzulisten, habe ich versucht, Datenpunkte zu machen[0:5][0] aber alles, was ich bekomme, ist der erste Datenpunkt mit beiden Elementen, anstatt die ersten 5 Datenpunkte zu erhalten, die nur das erste Element enthalten. Gibt es eine Möglichkeit, dies zu tun?

datapoints[0:5][0] macht nicht was du erwartest. datapoints[0:5] gibt ein neues Listensegment zurück, das nur die ersten 5 Elemente enthält, und fügt dann hinzu [0] Am Ende wird nur das erste Element verwendet aus diesem resultierenden Listensegment. Was Sie verwenden müssen, um das gewünschte Ergebnis zu erzielen, ist a Listenverständnis:

[p[0] for p in datapoints[0:5]]

Hier ist eine einfache Möglichkeit, den Mittelwert zu berechnen:

sum(p[0] for p in datapoints[0:5])/5. # Result is 35.8

Wenn Sie bereit sind zu installieren NumPydann geht es noch einfacher:

import numpy
json1_file = open('json1')
json1_str = json1_file.read()
json1_data = json.loads(json1_str)[0]
datapoints = numpy.array(json1_data['datapoints'])
avg = datapoints[0:5,0].mean()
# avg is now 35.8

Verwendung der , Operator mit der Slicing-Syntax für die Arrays von NumPy hat das Verhalten, das Sie ursprünglich mit den Listen-Slices erwartet haben.

  • Danke dafür! Ich habe noch eine Frage, falls jemand beißen kann: Ich versuche, den Durchschnitt der ersten Elemente in diesen Datenpunkten zu nehmen (dh Datenpunkte[0][0]). Nur um sie aufzulisten, habe ich versucht, Datenpunkte zu machen[0:5][0] aber alles, was ich bekomme, ist der erste Datenpunkt mit beiden Elementen, anstatt die ersten 5 Datenpunkte zu erhalten, die nur das erste Element enthalten. Gibt es eine Möglichkeit, dies zu tun?

    – Lawchit

    20. Oktober 13 um 22:40 Uhr

  • @lawchit – Siehe meine aktualisierte Antwort. Wenn Sie mit diesen Daten rechnen möchten, empfehle ich dringend die Verwendung von NumPy.

    – DaoWen

    21. Oktober 13 um 0:35 Uhr

  • Dieser verdient weitere 100 Punkte 🙂 Ich habe einen ganzen Tag nach dieser Lösung gesucht

    – Maman

    4. Februar 20 um 19:22 Uhr

  • Ich habe Stunden damit verschwendet, herauszufinden, warum meine gelesenen json-Daten so viel Chaos sind. Diese Antwort hat mich gerettet. Danke für das Teilen.

    – Raymond

    Vor 2 Tagen

Hier ist ein einfacher Ausschnitt, der in a gelesen wird json Textdatei aus einem Wörterbuch. Beachten Sie, dass Ihre JSON-Datei dem JSON-Standard folgen muss, also muss sie es haben " dann eher doppelte Anführungszeichen ' Einzelzitate.

Ihre JSON dump.txt-Datei:

{"test":"1", "test2":123}

Python-Skript:

import json
with open('/your/path/to/a/dict/dump.txt') as handle:
    dictdump = json.loads(handle.read())

1643914567 789 Konvertieren von JSON String in Dictionary Not List
Benutzergast

Sie können Folgendes verwenden:

import json

 with open('<yourFile>.json', 'r') as JSON:
       json_dict = json.load(JSON)

 # Now you can use it like dictionary
 # For example:

 print(json_dict["username"])

1643914568 715 Konvertieren von JSON String in Dictionary Not List
Sampat Kumar

Der beste Weg, JSON-Daten in das Wörterbuch zu laden, ist, den integrierten JSON-Loader zu verwenden.

Unten ist das Beispiel-Snippet, das verwendet werden kann.

import json
f = open("data.json")
data = json.load(f))
f.close()
type(data)
print(data[<keyFromTheJsonFile>])

Ich arbeite mit einem Python-Code für eine REST-API, also ist dies für diejenigen, die an ähnlichen Projekten arbeiten.

Ich extrahiere Daten aus einer URL mit einer POST-Anfrage und die Rohausgabe ist JSON. Aus irgendeinem Grund ist die Ausgabe bereits ein Wörterbuch, keine Liste, und ich kann sofort auf die verschachtelten Wörterbuchschlüssel verweisen, wie folgt:

datapoint_1 = json1_data['datapoints']['datapoint_1']

Dabei befindet sich datapoint_1 im Datapoints-Wörterbuch.

Konvertieren von JSON String in Dictionary Not List
DanielM

Übergeben Sie die Daten mit Javascript Ajax von Get-Methoden

    **//javascript function    
    function addnewcustomer(){ 
    //This function run when button click
    //get the value from input box using getElementById
            var new_cust_name = document.getElementById("new_customer").value;
            var new_cust_cont = document.getElementById("new_contact_number").value;
            var new_cust_email = document.getElementById("new_email").value;
            var new_cust_gender = document.getElementById("new_gender").value;
            var new_cust_cityname = document.getElementById("new_cityname").value;
            var new_cust_pincode = document.getElementById("new_pincode").value;
            var new_cust_state = document.getElementById("new_state").value;
            var new_cust_contry = document.getElementById("new_contry").value;
    //create json or if we know python that is call dictionary.        
    var data = {"cust_name":new_cust_name, "cust_cont":new_cust_cont, "cust_email":new_cust_email, "cust_gender":new_cust_gender, "cust_cityname":new_cust_cityname, "cust_pincode":new_cust_pincode, "cust_state":new_cust_state, "cust_contry":new_cust_contry};
    //apply stringfy method on json
            data = JSON.stringify(data);
    //insert data into database using javascript ajax
            var send_data = new XMLHttpRequest();
            send_data.open("GET", "http://localhost:8000/invoice_system/addnewcustomer/?customerinfo="+data,true);
            send_data.send();

            send_data.onreadystatechange = function(){
              if(send_data.readyState==4 && send_data.status==200){
                alert(send_data.responseText);
              }
            }
          }

Django-Ansichten

    def addNewCustomer(request):
    #if method is get then condition is true and controller check the further line
        if request.method == "GET":
    #this line catch the json from the javascript ajax.
            cust_info = request.GET.get("customerinfo")
    #fill the value in variable which is coming from ajax.
    #it is a json so first we will get the value from using json.loads method.
    #cust_name is a key which is pass by javascript json. 
    #as we know json is a key value pair. the cust_name is a key which pass by javascript json
            cust_name = json.loads(cust_info)['cust_name']
            cust_cont = json.loads(cust_info)['cust_cont']
            cust_email = json.loads(cust_info)['cust_email']
            cust_gender = json.loads(cust_info)['cust_gender']
            cust_cityname = json.loads(cust_info)['cust_cityname']
            cust_pincode = json.loads(cust_info)['cust_pincode']
            cust_state = json.loads(cust_info)['cust_state']
            cust_contry = json.loads(cust_info)['cust_contry']
    #it print the value of cust_name variable on server
            print(cust_name)
            print(cust_cont)
            print(cust_email)
            print(cust_gender)
            print(cust_cityname)
            print(cust_pincode)
            print(cust_state)
            print(cust_contry)
            return HttpResponse("Yes I am reach here.")**

.

758920cookie-checkKonvertieren von JSON-String in Dictionary Not List

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy