小编bry*_*ich的帖子

JSON.NET - 条件类型反序列化

我正在使用一些ARCGis Web服务,他们有一些不幸的JSON设计.例如,他们可能会给出这样的东西:

{
geometryType: "esriGeometryPolygon"
geometry: {
-rings: [
-[.blah..... }}
Run Code Online (Sandbox Code Playgroud)

现在,根据传入的geometryType值,几何对象可以是几种不同对象类型之一.在上面的例子中,几何节点是Polygon类型.

所以,问题是; 在JSON.NET中有没有办法记录这种条件类型?如果没有(我怀疑有),有没有办法根据上面的对象信息构建一个反序列化该几何节点的提供程序?如果没有,有什么建议的解决方法吗?

编辑:我看起来非常广泛地构建自定义转换器,但转换器的问题是他们有这种抽象方法:

public override T Create (Type objectType)
Run Code Online (Sandbox Code Playgroud)

但是,我无法知道在这里创建什么类型,我需要知道上面的JSON中指定了什么类型的对象.

谢谢!

c# json.net

22
推荐指数
1
解决办法
5910
查看次数

解析JSON.net中的枚举

我正在使用JSON.net(也许v3.5ish?它来自2010年10月).我试图将一些json反序列化为枚举:

geometryType:"esriGeometryPolygon"

我有这个枚举:

/// <summary>
/// The geometry type.
/// </summary>
[DataContract]
public enum GeometryType
{
    /// <summary>
    /// Refers to geometry type Envelope
    /// </summary>
    [EnumMember(Value = "esriGeometryEnvelope")]
    Envelope,
    /// <summary>
    /// Refers to geometry type MultiPoint
    /// </summary>
    [EnumMember(Value = "esriGeometryMultipoint")]
    MultiPoint,
    /// <summary>
    /// Refers to geometry type MapPoint
    /// </summary>
    [EnumMember(Value = "esriGeometryPoint")]
    Point,
    /// <summary>
    /// Refers to geometry type Polygon
    /// </summary>
    [EnumMember(Value = "esriGeometryPolygon")]
    Polygon,
    /// <summary>
    /// Refers to geometry type Polyline …
Run Code Online (Sandbox Code Playgroud)

c# json.net xamarin.ios

20
推荐指数
1
解决办法
9496
查看次数

Android NDK与Visual Studio

我想使用NDK(本机开发工具包)为android构建一些本机库,但我想使用Visual Studio 2010来完成它.我已经google了很多但没有找到任何相关信息.有没有人有这方面的经验,并知道实现这一目标所需的步骤?我安装了CYGWin,确保我得到Make(根据NDK指令),但我不确定在设置项目,Visual Studio中的编译器等方面的后续步骤.

如果有人知道任何文章,教程或示例项目的链接,这将是非常棒的,因为谷歌还没有太多.

谢谢!

android visual-studio-2010 android-ndk

19
推荐指数
2
解决办法
3万
查看次数

Nhibernate 3和LINQ

我正在将一些代码从Nhibernate 2.x转换为3.0.之前,我正在使用LINQ插件,以获得LINQ支持.我的理解是在3.0中它作为一流的功能进入了.所以我的问题是,我曾经有这个:

return new List<T>(session.Linq<T>().Where(where));
Run Code Online (Sandbox Code Playgroud)

新语法看起来如何?我浏览了nhib 3文档和教程,并没有看到任何关于linq的东西,所以我找不到一个例子来模式.

linq nhibernate

17
推荐指数
1
解决办法
1万
查看次数

android中的外部项目引用

我有一个Android应用程序,利用另一个项目作为项目参考.我已进入应用程序选项,构建路径,然后在项目引用中选择项目.

一切都构建和部署良好,但当我尝试运行应用程序并在该项目中实例化一个类时,我得到一个java.lang.NoClassDefFoundError错误rrrrrr.

我不是java项目专家,所以我假设我已经做了一些简单的事情.有任何想法吗?

android

16
推荐指数
3
解决办法
2万
查看次数

Android列表项:左侧是TextView,右侧是图像

我正在和Android列表视图中创建自定义列表项.它很简单,左边是文本视图,右边是图像.图像应该一直对齐,文本视图应该占据左侧的所有空间.问题是,我可以让图像显示,但它向左推.如果我将textview宽度设置为fill_parent,图像将消失.这是我的布局:

<?xml version="1.0" encoding="utf-8" ?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" 
              android:layout_width="fill_parent" android:layout_height="50px" android:layout_gravity="center_vertical">
  <!-- item -->
  <TextView android:id="@+id/txtItem" android:gravity="center_vertical" android:textSize="20px" android:layout_width="fill_parent" 
            android:layout_height="fill_parent"/>

  <!-- disclosure image -->
  <ImageView android:layout_gravity="right|center_vertical" android:src="@drawable/common_icon_arrow_disclosure" 
              android:layout_width="wrap_content" android:layout_height="wrap_content"/>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

我也试过相对布局,但同样的事情发生了.我究竟做错了什么?


编辑:澄清,这是我想要完成的:

替代文字

我希望文本字段占据整个左侧区域,图像位于右侧,未缩放,垂直居中.

android-layout

11
推荐指数
3
解决办法
3万
查看次数

调试JSON.NET

我正在使用JSON.NET反序列化从Web服务返回的一些JSON.不幸的是,我得到以下错误:

无法将JSON数组反序列化为类型'System.Collections.Generic.Dictionary`2 [System.String,System.String]'.

但我不知道如何调试它.有没有办法让它告诉我什么是令人讨厌的JSON?甚至它正在尝试将其反序列化为什么?不幸的是,这是更大的对象层次结构的一部分,所以它不仅仅是一个简单的JSON.我已经尝试逐步完成代码,但是它有数英里而且文档很少.如果它至少可以告诉我有问题的一块,那么我可以看看是否可能是我的对象定义或其他东西.

c# json.net xamarin.ios

9
推荐指数
2
解决办法
7546
查看次数

Nhibernate出错:System.Data.SqlClient.SqlException:'Index'附近的语法不正确

我有一个nhibernate解决方案,我正在尝试保存,但我收到此错误:

Test method HelloMusic.Core.Test.CrudTests.TestTrackAdd threw exception: 
NHibernate.Exceptions.GenericADOException: could not insert collection: [HelloMusic.BLL.Track.Credits#20][SQL: INSERT INTO Tracks_Credits (TrackID, Index, CreditID) VALUES (@p0, @p1, @p2)] ---> System.Data.SqlClient.SqlException: Incorrect syntax near 'Index'. If this is intended as a part of a table hint, A WITH keyword and parenthesis are now required. See SQL Server Books Online for proper syntax.
Run Code Online (Sandbox Code Playgroud)

SQL如下:

NHibernate: SELECT this_.GenreID as GenreID9_0_, this_.GenreName as GenreName9_0_ FROM Genres this_
NHibernate: INSERT INTO Tracks (ContainsSamples, Description, HasExplicitLyrics, IsCover, Lyrics, Name, OrderIndex, GenreID) VALUES …
Run Code Online (Sandbox Code Playgroud)

nhibernate fluent-nhibernate

7
推荐指数
1
解决办法
4366
查看次数

Proguard和XmlPullParser的问题

我在使用Proguard和一些库的Android项目上遇到了一些麻烦.具体来说,我有一个XmlPullParser碰撞,无论我做什么,我似乎无法解决它.这是我正在使用的库:

JacksonParser,包括:

  • 杰克逊all.1.6.4.jar
  • 乔达-time.1.6.2.jar
  • JSR311的API-1.0.jar
  • stax2-API-3.0.0.jar

XStream,包括:

  • xpp3_min-1.1.4c.jar
  • 西河星汇换Android的1.0.0.jar

还有其他人,但他们不是问题.这些似乎是我们问题的罪魁祸首.

具体来说,问题是:

优化

如果我进行优化,我会"转换为dalvik失败1".在外部JAR的"转换为Dalvik格式失败并出现错误1"中有一篇专门的帖子,这使我指出了重复的XmlPullParser类的方向.这是有道理的,因为XStream使用app3_min-1.1.4c.jar,其中包含一个XmlPullParser,它具有比android.jar中包含的功能更好/更多的功能.因此,我尝试从android.jar中删除通配符xmlpull**:

-libraryjars <java.home>/lib/rt.jar;C:/Android/platforms/android-9/android.jar(!org/xmlpull/v1/**)
Run Code Online (Sandbox Code Playgroud)

我也试过明确删除它们:

-libraryjars <java.home>/lib/rt.jar;C:/Android/platforms/android-9/android.jar(!org/xmlpull/v1/XmlPullParser.class,!org/xmlpull/v1/XmlPullParserException.class,!org/xmlpull/v1/XmlPullParserFactory,!org/xmlpull/mxp1/MXParser)
Run Code Online (Sandbox Code Playgroud)

但这两种方法都没有帮助.

但等等,还有更多(尽管所有问题都集中在同一个问题上,所以我想如果我解决了这个问题,那么其他问题就会消失).

困惑

如果我尝试混淆,我得到以下运行时错误:

java.lang.NoSuchMethodError: android.content.res.XmlResourceParser.s
looking this up in the mapping, i get: .s = abstract int next()
Run Code Online (Sandbox Code Playgroud)

所以它缺少next()方法.那么为什么这种方法丢失了?我不明白.我甚至试过这样做:

-keep class android.content.res.XmlResourceParser { int next(); }
Run Code Online (Sandbox Code Playgroud)

确保方法得到保留,但我仍然遇到同样的问题.

收缩

萎缩似乎也失败了.应用程序启动但永远不会到达任何地方,它只是不断尝试一遍又一遍地启动第一个活动并给我一个无用的错误.我不是很担心这个,但是,如果我可以进行模糊处理和优化工作,我可以不受畏缩地生活.

更多信息

作为参考,我试图以两种方式引用我的库,第一种是使用injars:

-injars ReferencedAssemblies/XStream/xpp3_min-1.1.4c.jar(!META-INF/MANIFEST.MF)
-injars ReferencedAssemblies/JacksonParser/jackson-all-1.6.4.jar(!META-INF/MANIFEST.MF,!META-INF/ASL2.0,!META-INF/LICENSE,!META-INF/NOTICE)
-injars ReferencedAssemblies/JacksonParser/joda-time-1.6.2.jar(!META-INF/MANIFEST.MF)
-injars ReferencedAssemblies/JacksonParser/jsr311-api-1.0.jar(!META-INF/MANIFEST.MF)
-injars ReferencedAssemblies/JacksonParser/stax2-api-3.0.0.jar(!META-INF/MANIFEST.MF)
-injars ReferencedAssemblies/XStream/xstream-for-android-1.0.0.jar(!META-INF/MANIFEST.MF)
Run Code Online (Sandbox Code Playgroud)

这甚至不会建立.

我也这样做了:

-libraryjars <java.home>/lib/rt.jar
  ;C:/Android/platforms/android-9/android.jar(!org/xmlpull/v1/**)
  #;C:/Android/platforms/android-9/android.jar(!org/xmlpull/v1/XmlPullParser.class,!org/xmlpull/v1/XmlPullParserException.class,!org/xmlpull/v1/XmlPullParserFactory,!org/xmlpull/mxp1/MXParser)
  ;ReferencedAssemblies/JacksonParser/jackson-all-1.6.4.jar(!META-INF/MANIFEST.MF,!META-INF/ASL2.0,!META-INF/LICENSE,!META-INF/NOTICE)
  ;ReferencedAssemblies/JacksonParser/joda-time-1.6.2.jar(!META-INF/MANIFEST.MF)
  ;ReferencedAssemblies/JacksonParser/jsr311-api-1.0.jar(!META-INF/MANIFEST.MF)
  ;ReferencedAssemblies/JacksonParser/stax2-api-3.0.0.jar(!META-INF/MANIFEST.MF)
  ;ReferencedAssemblies/XStream/xpp3_min-1.1.4c.jar(!META-INF/MANIFEST.MF)
Run Code Online (Sandbox Code Playgroud)

这让我走得最远,如果我不优化,我可以导出APK.

我也这样做了:

-dontwarn org.xmlpull.v1.** …
Run Code Online (Sandbox Code Playgroud)

android proguard

4
推荐指数
2
解决办法
5324
查看次数