我在使用jQuery .each()函数循环JSON的键/值时遇到问题
最初我有一个像这样的JSON:
json = {"aaa":[
{"id":"1","data":"aaa1data"}
,{"id":"2","data":"aaa2data"}
],
"bbb":[
{"id":"3","data":"bbb1data"}
]
}
Run Code Online (Sandbox Code Playgroud)
我想循环遍历JSON(aaa和bbb)中的所有键/值元素,并检索内部JSON数组以便再次循环,所以我试过
$(json).each(function(index,data)
{
var zzz = data;
$(zzz).each(function(index,data))
{
//some other stuff
}
}
Run Code Online (Sandbox Code Playgroud)
但是,我发现第一个.each()函数将整个json视为单个结构,并且不会在其元素的键上循环.从.each()函数接收的数据参数始终是原始的json本身.我永远无法获得指向aaa和bbb的内部JSON数组的引用.
这里会出现什么问题,我应该如何通过jQuery正确地循环JSON中的所有键/值元素?
我有以下代码请求用户从照片应用程序中选择图像或通过相机应用程序捕获图像:
// Camera
final List<Intent> cameraIntents = new ArrayList<Intent>();
final Intent captureIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
final PackageManager packageManager = fragment.getActivity().getPackageManager();
final List<ResolveInfo> listCam = packageManager.queryIntentActivities(captureIntent, 0);
for(ResolveInfo res : listCam) {
final String packageName = res.activityInfo.packageName;
final Intent intent = new Intent(captureIntent);
intent.setComponent(new ComponentName(res.activityInfo.packageName, res.activityInfo.name));
intent.setPackage(packageName);
intent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);
cameraIntents.add(intent);
}
// Filesystem.
final Intent galleryIntent = new Intent();
galleryIntent.setType("image/*");
galleryIntent.setAction(Intent.ACTION_GET_CONTENT);
// Chooser of filesystem options.
final Intent chooserIntent = Intent.createChooser(galleryIntent, "Select Source");
// Add the camera options.
chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, cameraIntents.toArray(new Parcelable[]{})); …
Run Code Online (Sandbox Code Playgroud) 我有一个非常简单的textview:
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/app_name"
android:textSize="20sp"
android:textColor="@style/basic_text_color"
android:layout_gravity="center"
android:id="@+id/toolbar_title" />
Run Code Online (Sandbox Code Playgroud)
哪个@ style/basic_text_color是我想在应用程序中重复使用很多时间的颜色,所以我创建了一个app_colors.xml
under values
文件夹:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- Text colors style-->
<style name="basic_text_color" parent="@android:style/TextAppearance">
<item name="android:textColor">#ff932e</item>
</style>
<!-- some other color styles-->
</resources>
Run Code Online (Sandbox Code Playgroud)
应用程序编译成功,但随后执行时它将挂起并在LogCat中提示跟随错误:
FATAL EXCEPTION: main
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.aaa/com.example.aaa.activity.MainActivity}: android.view.InflateException: Binary XML file line #17: Error inflating class TextView
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2100)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2125)
at android.app.ActivityThread.access$600(ActivityThread.java:140)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1227)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4898)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1006)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:773)
at …
Run Code Online (Sandbox Code Playgroud)