如何获取同时包含JSON对象和数组的JSON数据

时间:2019-03-21 17:07:00

标签: java android arrays json

*我已经从responce.body()获得此JSON对象。我希望将其中的每个数据单独放在变量中。我正在使用Java。

    {  
   "Classes":{  
      "Primary":{  
         "Classes":{  
            "1":{  
               "section":[  
                  "a",
                  "b"
               ]
            },
            "2":{  
               "sections":[  
                  "a",
                  "b"
               ]
            }
         }
      }
   }
}

*我知道如何获取JSONObject,但我不知道如何在“ section”中获取该数组。即使我使用JSONArray获得该数组,那么如何将其转换为JSONObject?或字符串。

*请注意,“ section”数组的内部值是动态的,该数组内部的值是动态的,并且可以从“ a”到“ z”多个。此外,“类”(在主类内部)内的JSONObject也是动态的。可以有多个动态的“ 1”,“ 2” ...,它是字符串,没有必要增加数字。

4 个答案:

答案 0 :(得分:0)

您已将其标记为java,所以我只能假设您想要该语言的解决方案。

要使用需要解析的数据,这意味着您正在将数据转换为更有用的类型。

点击this,了解如何在Java中解析JSON

答案 1 :(得分:0)

假设您需要Java解决方案,请使用this获取json结构的对象类,然后使用GSON之类的库将json转换为java对象。

示例:

String json = "{\"city\":\"San Jose\", \"state\": \"CA\", \"country\":\"USA\"}";

Gson gson = new Gson();

Place place = gson.fromJson(json, Place.class);

答案 2 :(得分:0)

经过30分钟的战斗,我找出了答案,只需将这段代码复制并粘贴到您要使用的位置-

在这里--

from kiteconnect import KiteTicker;
from kiteconnect import KiteConnect;
import logging
import time,os,datetime,math;
import winsound
import pandas as pd

trd_portfolio = {954883:"USDINR19MARFUT",4632577:"JUBLFOOD"} 
# trd_portfolio = {954883:"USDINR19MARFUT"}

trd_tkn1 = [];

for x in trd_portfolio:
    trd_tkn1.append(x)


c_id = '****************'
ak = '************'
asecret = '*************************'

kite = KiteConnect(api_key=ak)
print('[*] Generate access Token : ',kite.login_url())
request_tkn = input('[*] Enter Your Request Token Here : ')[-32:];
data = kite.generate_session(request_tkn, api_secret=asecret)
kite.set_access_token(data['access_token'])
kws = KiteTicker(ak, data['access_token'])

#columns in data frame
df_cols = ["Timestamp", "Token", "LTP"]

data_frame = pd.DataFrame(data=[],columns=df_cols, index=[])

def on_ticks(ws, ticks):

    global data_frame, df_cols

    data = dict() 

    for company_data in ticks:
        token = company_data["instrument_token"]
        ltp = company_data["last_price"]
        timestamp = company_data['timestamp']

        data[timestamp] = [timestamp, token, ltp]

    tick_df = pd.DataFrame(data.values(), columns=df_cols, index=data.keys()) #
    data_frame = data_frame.append(tick_df)

    ggframe=data_frame.set_index(['Timestamp'],['Token'])
    print ggframe
    gticks=ggframe.ix[:,['LTP']]
    candles=gticks['LTP'].resample('1min').ohlc().dropna()
    print candles

def on_connect(kws , response):
    print('Connected')
    kws.subscribe(trd_tkn1)
    kws.set_mode(kws.MODE_FULL, trd_tkn1)

def on_close(ws, code, reason):
    print('Connection Error')


kws.on_ticks = on_ticks
kws.on_connect = on_connect
kws.on_close = on_close

kws.connect()

答案 3 :(得分:0)

如果使用离子(打字稿或javascript),则可以使用以下方法

var json = "{
          "Classes": {
            "Primary": {
              "Classes": {
                "1": {
                  "section": [
                    "a",
                    "b"
                  ]
                },
                "2": {
                  "sections": [
                    "a",
                    "b"
                  ]
                }
              }
            }
          }
        }";
for(let item in json.Classes.Primary.Classes){
console.log(item.sections);
}

如果要使用html在前端显示相同的数据,请使用* ngFor

<div *ngFor="let item in json.Classes.Primary.Classes ">
 <h5>{{item.sections}}</h5>
</div>

希望对您有帮助。