我想要达到的目标。我有一个包含一些属性/对象的类。我只想用我的自定义序列化程序序列化那些满足 CanConvert 条件的对象,其他的应该默认处理。
问题是[JsonConverter(typeof(UnityObjectConverter))]
它可以正确序列化但反序列化失败。可能是因为我只保存了对象的路径,而不是整个对象,并且当一些内部检查(我不明白为什么)发生时,它失败并返回 null,因为ReadJson
从未调用过。
当我使用设置时,它给我带来了更多的问题,它解决了因为它没有序列化其余的问题。我不想对整个类进行序列化,因为这样它就不会很通用,因为有几个对象继承了该类。类本身不是抽象的,因此可能有一些对象只使用该类。如果有人可以提供帮助,我会很高兴。谢谢
public class UnityObjectConverter : JsonConverter {
public override bool CanConvert(Type objectType) {
Debug.Log(objectType.BaseType == typeof(UnityEngine.Object));
return objectType.BaseType == typeof(UnityEngine.Object);
}
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) {
Debug.Log("read");
return UnityEditor.AssetDatabase.LoadAssetAtPath(reader.ReadAsString(), objectType);
}
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) {
Debug.Log("write");
var item = (UnityEngine.Object)value;
writer.WriteValue(UnityEditor.AssetDatabase.GetAssetPath(item));
writer.Flush();
}
public override bool CanRead {
get {
return true;
}
}
public override bool CanWrite …
Run Code Online (Sandbox Code Playgroud) 我一直坚持map
在标签内创建.getActivity().getSupportFragmentManager().findFragmentById(R.id.map)
returns null
.即使我用它替换它getChildFragmentManager().findFragmentById(R.id.map)
.
我对此很新,所以我可能在其他地方出错了,但我不知道它可能是什么.
码
public class FragmentMap extends Fragment implements OnMapReadyCallback
@Override
public void onStart() {
super.onStart();
mMapFragment = (SupportMapFragment)getActivity().getSupportFragmentManager().findFragmentById(R.id.map);
mMapFragment.getMapAsync(this);
}
Run Code Online (Sandbox Code Playgroud)
XML
<?xml version="1.0" encoding="utf-8"?>
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
android:name="com.google.android.gms.maps.MapFragment"
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
Run Code Online (Sandbox Code Playgroud) 我是c ++的新手所以有很多我不知道的事情,这就是为什么我想问一个有更多经验的人.
std::vector<CProp*> filter(const string &deptName, const string &city, const string &country)const {
...
}
Run Code Online (Sandbox Code Playgroud)
我正在使用std命名空间,所以std ::应该是多余的,但如果我删除它,编译器会显示错误(首先是这个声明没有存储类或类型说明符?).这是为什么?我从来没有在类中的其他地方使用它,所以不应该有任何冲突我也只使用std命名空间.
#include <cassert>
#include <cstring>
#include <cstdlib>
#include <cstdio>
#include <iostream>
#include <iomanip>
#include <string>
#include <memory>
#include <vector>
#include <algorithm>
using namespace std;
class ClassName {
public:
...
private:
vector<CProp*> vector;
vector<CProp*> filter(const string &deptName, const string &city, const string &country)const {
return nullptr;
}
}
Run Code Online (Sandbox Code Playgroud)