我有一个数据变量,其中包含list
dicts
lists
bytes
我从api中获取的In: data
Out: b'[{"dict1_list1":[1,2,3],"dict1_list2":[4,5,6]},{"dict2_list1":[1,2,3],"dict2_list2":[4,5,6]}]'
,格式为In: data
Out: b'[{"onlydict_list1":[1,2,3],"onlydict_list2":[4,5,6]}]'
。该列表的长度可变。
byte
我想确定列表中只有一个dict(即api已用完数据)
In: len(data)
Out: 53 # Not '1' as I would like
但由于数据格式为b'[....]'
,我无法返回列表的长度。
// ----- GetCChooseItemView() -- -Search the first associated CView in INACTIVE Views too ! ------
CView* CMyDoc::GetCChooseItemView(void)
{
CRuntimeClass* prt = RUNTIME_CLASS(CChooseItemView);
CView* pView = NULL;
// Continue search in inactive View by T(o)m
POSITION pos = GetFirstViewPosition();
while (pos != NULL)
{
pView = GetNextView(pos);
if (pView->GetRuntimeClass() == prt)
{
if (pView->IsKindOf(RUNTIME_CLASS(CChooseItemView)))
break;
}
pView = NULL; // not valid vie
}
return static_cast<CChooseItemView*>(pView);
}
如何在void CMainFrame::SelectView(UINT ViewID)
{
: (code as before)
:
// Get a pointer to the current view
CView* pCurrentView = GetActiveView();
// Get a pointer to the current view
CView* pCurrentView = GetActiveView();
if (pCurrentView == NULL
{
CMyDoc* pDoc = static_cast<CMyDoc*>(GetActiveDocument());
if (pDoc)
{
pCurrentView = pDoc->GetChhoseItemView();
if (pCurrentView == NULL)
mpCurrentView = pDoc->GetCItemInformationView() // let as exercise for the OP
if (pCurrentView == NULL
{
DebugBreak(); // Errror No View found..
}
}
: (code as befeore)
:
}
?
答案 0 :(得分:1)
如果r是响应,则尝试调用r.json()方法。它将转换为列表,然后您可以找到它的长度。您还可以通过导入json(import json)来使用json.loads(r.text)。
答案 1 :(得分:1)
你获得了bytes对象的长度,这显然是data
的类型,不是它对应的JSON对象的Python版本。
一种简单的方法是首先使用json.loads()
将数据转换为等效于字节字符串的Python对象。这就是我的意思:
import json
data = (b'[{"dict1_list1":[1,2,3],"dict1_list2":[4,5,6]},'
b'{"dict2_list1":[1,2,3],"dict2_list2":[4,5,6]}]')
print(len(json.loads(data))) # -> 2